Android学习之控件不同状态文字显示不同颜色
2013-07-18 13:57
627 查看
方式一:
第一要选择的控件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/close_time_display"
android:layout_marginRight="20dp"
android:text="@string/default_time"
style="@style/item_content_text_style"/>
style是自定义的风格,对应的xml文件如下:
<style name="item_content_text_style">
<item name="android:textSize">26sp</item>
<item name="android:duplicateParentState">true</item>
<item name="android:textColor">@drawable/textcolor_yellow_selector</item>
</style>
textColor中的textcolor_yellow_selector如下
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:color="@color/yellow" />
<item
android:state_focused="true"
android:color="@color/yellow" />
<item android:state_selected="true"
android:color="@color/yellow"></item>
<item android:color="@color/white"/>
</selector>
实现方式二:ColorStateList文字变色
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/49a97b9448b977547aa2fe5d34ed5416.png)
Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮。但是Android里面实现起来非常方便。
我们首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
Button btn=(Button)findViewById(R.id.btn);
Resources resource=(Resources)getBaseContext().getResources();
ColorStateList csl=(ColorStateList)resource.getColorStateList(R.color.button_text);
if(csl!=null){
btn.setTextColor(color_state_list);//设置按钮文字颜色
}
或者可以这样:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
XmlResourceParser xpp=Resources.getSystem().getXml(R.color.button_text);
try {
ColorStateList csl= ColorStateList.createFromXml(getResources(),xpp);
btn.setTextColor(csl);
} catch (Exception e) {
// TODO: handle exception
}
最后附上所有可能出现的状态:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
<?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_active=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
第一要选择的控件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/close_time_display"
android:layout_marginRight="20dp"
android:text="@string/default_time"
style="@style/item_content_text_style"/>
style是自定义的风格,对应的xml文件如下:
<style name="item_content_text_style">
<item name="android:textSize">26sp</item>
<item name="android:duplicateParentState">true</item>
<item name="android:textColor">@drawable/textcolor_yellow_selector</item>
</style>
textColor中的textcolor_yellow_selector如下
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:color="@color/yellow" />
<item
android:state_focused="true"
android:color="@color/yellow" />
<item android:state_selected="true"
android:color="@color/yellow"></item>
<item android:color="@color/white"/>
</selector>
实现方式二:ColorStateList文字变色
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/49a97b9448b977547aa2fe5d34ed5416.png)
Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮。但是Android里面实现起来非常方便。
我们首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
Button btn=(Button)findViewById(R.id.btn);
Resources resource=(Resources)getBaseContext().getResources();
ColorStateList csl=(ColorStateList)resource.getColorStateList(R.color.button_text);
if(csl!=null){
btn.setTextColor(color_state_list);//设置按钮文字颜色
}
或者可以这样:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
XmlResourceParser xpp=Resources.getSystem().getXml(R.color.button_text);
try {
ColorStateList csl= ColorStateList.createFromXml(getResources(),xpp);
btn.setTextColor(csl);
} catch (Exception e) {
// TODO: handle exception
}
最后附上所有可能出现的状态:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5909ae50665b07df040956c63c085b6e.png)
<?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_active=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
相关文章推荐
- Android编程实现控件不同状态文字显示不同颜色的方法
- Android使用Tint,只用一张图片显示不同状态下的颜色
- Android TextView不同文字显示不同颜色
- 【学习】css之链接在不同状态下显示不同颜色
- android控件TextView之 分段显示不同颜色
- Android同一个TevtView显示不同颜色的文字,添加不同的点击事件。
- Android-Color State List用于控件在各状态下的文本颜色显示
- android中TextView同一行显示不同颜色文字
- 给一个TextView控件中的文字显示不同的颜色
- android 自定义 radiobutton 文字颜色随选中状态而改变
- Android根据Button状态(normal,focused,pressed)显示不同背景图片
- Android根据Button状态(normal,focused,pressed)显示不同背景图片
- android中TextView分段显示不同颜色,字体,时间
- android修改状态栏背景色及文字图标颜色
- android selector 简介(通过判断控件的不同状态为其添加背景等操作)
- UILabel显示不同颜色文字。
- 文字根据状态更改颜色 android:textColor
- Android设置Selector不同状态下颜色及图片
- 最新历史版本 :android--设置TextView部分文字的颜色和背景(高亮显示)
- android中TextView分段显示不同颜色,字体,时间