ColorStateList
参考:https://blog.csdn.net/zjh_1110120/article/details/89438309
ColorStateList(颜色状态列表)是一个可以定义在 XML 布局文件中,并最终根据 ColorStateList 应用的 View 的状态显示不同颜色的对象。
文件位置:res/color/filename.xml
应用方式:
- In Java: R.color.filename
- In XML: @[package:]color/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
属性 | 定义 | 取值范围 |
---|---|---|
color | 不同状态的颜色值 | 十六进制的颜色值。可以是如下格式: #RGB #ARGB #RRGGBB #AARRGGBB |
state_pressed | View 按下的状态 | true,false。true,按下;false,默认状态,即没有按下之前的状态。 |
state_selected | View 选中的状态 | true,false。true,选中;false,未选中。 |
示例:
//1. text_color_state_list.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/green_700" android:state_pressed="true" />
<item android:color="@color/grey_700" android:state_pressed="false" />
<!--默认项-->
<item android:color="@color/grey_700" />
</selector>
注意:
1.ColorStateList 中定义的默认 Item 一定要放在最下面
2.ColorStateList 是不能用于 View 的 Background
3.StateListDrawable 是不能用于 TextView 系的 TextColor
代码控制:
private void initView(){
mAlphaB = findViewById(R.id.alphabet_b);
ColorStateList colorStateList = createColorStateList(getResources().getColor(R.color.green_700), getResources().getColor(R.color.grey_700));
mAlphaB.setTextColor(colorStateList);
}
private ColorStateList createColorStateList(int pressed, int normal) {
//状态
int[][] states = new int[2][];
//按下
states[0] = new int[] {android.R.attr.state_pressed};
//默认
states[1] = new int[] {};
//状态对应颜色值(按下,默认)
int[] colors = new int[] { pressed, normal};
ColorStateList colorList = new ColorStateList(states, colors);
return colorList;
}
原文地址:https://www.jb51.cc/wenti/3288394.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。