radiobutton 换掉颜色drawableStateChanged

本文介绍了一种在UI设计中处理元素状态变化的方法,通过在组件的状态改变时调整背景颜色来实现视觉反馈。具体实现中使用了setColorFilter方法来根据组件是否可用而设置不同的颜色效果。

@Override 
public void drawableStateChanged() { 
   
Drawable background = getBackground(); 
   
if(background != null) { 
       
if(!isEnabled()) { 
            background
.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); 
       
} else { 
            background
.setColorFilter(null); 
       
} 
   
} 
} 

改变 RadioButton 颜色可以通过以下几种方法实现: ### 方法一:在 style 文件中设置 在 style 文件里定义一个新的样式,通过 `colorControlNormal` 和 `colorControlActivated` 分别设置未选中选中时的颜色。示例代码如下: ```xml <style name="MyRadioButton" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@color/colorPrimary</item> <item name="colorControlActivated">@color/colorAccent</item> </style> ``` 然后在布局文件的 RadioButton 中应用该样式: ```xml <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/MyRadioButton" android:text="选项"/> ``` ### 方法二:以编程方式设置 可以在 Java 代码中初始化和设置 RadioButton 的内容。示例代码如下: ```java RadioButton RB2 = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null); ``` ### 方法三:使用 selector 文件改变选择背景颜色 在 studio 创建 selector 文件用于改变 RadioButton 选择背景颜色。例如,创建 `selector.xml` 文件: ```xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@color/colorAccent"/> <item android:state_checked="false" android:drawable="@color/colorPrimary"/> </selector> ``` 然后在布局文件中应用该 selector: ```xml <RadioButton android:background="@drawable/selector" android:textSize="35px" android:text="首页" android:button="@null" android:id="@+id/ra1" android:textColor="@drawable/selector2" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"/> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值