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 可以帮助我们在不同状态下动态改变控件的颜色、背景色和文本颜色,使应用界面更加灵活多样。