ColorStateList 是一個用來描述不同狀態下顏色的資源,可以在 XML 文件中定義,然后在代碼中使用。在 Android 中,ColorStateList 主要用于定義 Button、TextView 等控件在不同狀態下的顏色。
高級應用 ColorStateList 主要包括以下幾個方面:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#FF0000" android:state_pressed="true"/>
<item android:color="#00FF00" android:state_focused="true"/>
<item android:color="#0000FF"/>
</selector>
在代碼中使用 ColorStateList 定義的顏色,如下所示:
ColorStateList colorStateList = getResources().getColorStateList(R.color.color_selector);
textView.setTextColor(colorStateList);
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/red" android:state_pressed="true"/>
<item android:drawable="@color/green" android:state_focused="true"/>
<item android:drawable="@color/blue"/>
</selector>
在代碼中使用 ColorStateList 定義的背景色,如下所示:
ColorStateList backgroundStateList = getResources().getColorStateList(R.color.background_selector);
button.setBackgroundTintList(backgroundStateList);
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/red" android:state_pressed="true"/>
<item android:color="@color/green" android:state_focused="true"/>
<item android:color="@color/blue"/>
</selector>
在代碼中使用 ColorStateList 定義的文本顏色,如下所示:
ColorStateList textStateList = getResources().getColorStateList(R.color.text_selector);
textView.setTextColor(textStateList);
總之,ColorStateList 可以幫助我們在不同狀態下動態改變控件的顏色、背景色和文本顏色,使應用界面更加靈活多樣。