Android ColorStateList使用方法

本文介绍了如何使用 Android 的 ColorStateList 和 selector 来灵活改变 UI 组件的颜色状态,包括按钮在不同状态下的颜色变化,并提供了具体的 XML 示例及 Java 调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android  ColorStateList可以添加xml文件可以结合selector使背景颜色变化更加自由。


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/yellow_btn" />
    <item android:state_selected="true" android:drawable="@color/WHITE" />
    <item android:drawable="@color/WHITE" />
</selector>

selector的基本含义和用法可以参照我的另一篇博客,

两种方式进行调用:

1.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);//设置按钮文字颜色 

 }  

2.

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
}

就可以实现button或者text的按下或者不按下颜色的更换。


可能好多人都遇到过这种问题,就是给button设置颜色的时候,设置的颜色失效,出现黑色或者其他颜色,然后好多人就用colorstatelist进行替代,其实原因是参数调用不正确导致。


第1种:tv.setTextColor(android.graphics.Color.RED);//系统自带的颜色类




第2种:tv.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x是代表颜色整数的标记,ff是表示透明度,ff00ff表示颜色,注意:这里ffff00ff必须是8个的颜色表示,不接受ff00ff这种6个的颜色表示。



第3种:tv.setTextColor(this.getResources().getColor(R.color.red));//通过获得资源文件进行设置。根据不同的情况R.color.red也可以是R.string.red或者R.drawable.red,当然前提是需要在相应的配置文件里做相应的配置,如:

<color name="red">#FF0000</color>

< drawable name="red">#FF0000</drawable>

< string name="red">#FF0000</string>

注意上面的第三种方法,千万不能把自己定义的颜色直接当成参数,例如:

tv.setTextColor(R.color.red);这种情况会出现颜色错误!



若有问题请留言,若转载注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值