ColorStateList改变按钮、文本框文字变色

本文详细介绍了如何在Android项目中,通过代码而非XML配置,实现按钮背景颜色和文字验证的动态变化。提供了两种实现方式:通过`ColorStateList`和从XML解析颜色状态列表。这有助于提升项目的灵活性和响应能力。

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

在平时项目中经常要做的就是改变按钮的背景颜色、文字验证,文本框也是如此。

我们知道用xml来实现选中效果是非常容易的,而且也简单。xml代码如下:这样的可以直接写在res/color/button_text.xml中

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#1c5e79"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#1c5e79"/> <!-- focused -->
    <item android:color="#0b5979"/> <!-- default -->
</selector>

xml中只要加一行代码:android:textColor="@drawable/tv_traffic_textcolor_selector"

但是在动态代码中如何使用这个xml呢?

今天主要说的就是如果通过代码来实现这个效果,实现可以用两种方式:

第一种

ColorStateList csl=(ColorStateList)getResources().getColorStateList(R.drawable.tv_traffic_textcolor_selector);  
				if(csl!=null){  
					holder.tvTrafficTool.setTextColor(csl);
				}

第二种:

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
}

都是一样的效果。,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡在网上的蜘蛛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值