Android学习 之 ColorStateList按钮文字变色
16lz
2021-01-26
Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮。但是Android里面实现起来非常方便。
我们首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <selectorxmlns:android="http://schemas.android.com/apk/res/android">
- <itemandroid:state_pressed="true"
- android:color="#ffff0000"/><!--pressed-->
- <itemandroid:state_focused="true"
- android:color="#ff0000ff"/><!--focused-->
- <itemandroid:color="#ff000000"/><!--default-->
- </selector>
Java代码
- Buttonbtn=(Button)findViewById(R.id.btn);
- Resourcesresource=(Resources)getBaseContext().getResources();
- ColorStateListcsl=(ColorStateList)resource.getColorStateList(R.color.button_text);
- if(csl!=null){
- btn.setTextColor(color_state_list);//设置按钮文字颜色
- }
或者可以这样:
Java代码
- XmlResourceParserxpp=Resources.getSystem().getXml(R.color.button_text);
- try{
- ColorStateListcsl=ColorStateList.createFromXml(getResources(),xpp);
- btn.setTextColor(csl);
- }catch(Exceptione){
- //TODO:handleexception
- }
最后附上所有可能出现的状态:
Java代码- <?xmlversion="1.0"encoding="utf-8"?>
- <selectorxmlns: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(安卓)APK反编译(最新更新
- Android使用MediaPlayer播放流媒体,支持远程以及本地流媒体,一行代
- Android实现文本折叠效果
- android中LinearGradient线性渐变
- Android(安卓)在App中启动另一个App
- Android使用ListView构造复杂界面,响应点击事件,通过Intent跳转act
- Android6.0-新控件(一)
- 修改Android默认启动项launcher
- android sdk 编译--如何将源代码加入android.jar,以及make原理