在Android Studio中,一个控件可能会有不同的状态,例如获得焦点状态、被按下状态等。颜色状态列表(Color State List)用于控制Android Studio中视图在不同状态下显示的不同颜色。
1 XML文件
可以使用XML文件定义颜色状态列表。
1.1创建color文件夹
首先在当前项目的res文件夹中,创建color文件夹。在res中创建的文件夹的方法请参考
Android Studio中选项菜单的使用方法2-1_hou09tian的博客-CSDN博客
1.2 创建XML文件
之后,在color文件夹的右键菜单中选择“New->Color resource file”,如图1所示,创建颜色资源文件。
图1 创建颜色资源文件
之后,在弹出的“New Color Resource File”对话框中,输入创建的颜色资源文件的文件名,如图2所示。
图2 “New Color Resource File”对话框
双击“yang_button_color.xml”文件(图3①),可以看到,创建的颜色资源文件的根元素是“selector”(图3②)
图3 颜色资源文件
1.3 编写XML文件
在颜色资源文件的根元素“selector”中,使用“item”子元素来表示不同状态下的颜色。通过“item”子元素的属性来表示不同的状态和颜色,如图4所示。
图4 “item”子元素
从图4中可以看出,颜色资源文件通过三个“item”子元素定义了三种不同状态下的颜色。其中android:state_pressed表示控件是否处于被选中状态,图4①定义了当控件处于被选中状态时,其颜色为红色;android:state_focused表示控件是否获取焦点,图4②定义了当控件获取焦点后,其颜色为蓝色;图4③定义了默认颜色是黑色。
2 使用颜色状态列表
在布局文件中添加Button控件,如图5所示。
图5 布局文件中的Button控件
其中,Button控件的“textColor”属性设置为“1.2 创建XML文件”中创建的颜色状态列表文件。
程序运行后,Button如图6所示。
图6 Button初始的颜色状态
当点击该Button后,其颜色变为红色,如图7所示。
图7 Button点击后的颜色状态
相关链接1 “item”子元素除了文中提到的“state_pressed”和“state_focused”两个属性之外,还有“state_selected”(控件是否被选中)、“state_checked”(控件是否被勾选)、“state_enable”(控件是否处于可以状态)、“state_activated”(控件是否处于活动状态)和“state_window_focused”(窗口是否获得焦点)等属性。
相关链接2 系统将使用颜色状态列表中与控件的当前状态匹配的第一项。因此,如果列表中的第一项不包含上述任何状态属性,则每次都会应用该项,因此默认值应始终为最后一项。