您的位置:首页 > 移动开发 > Android开发

Android 点击按钮同时更换按钮背景颜色和按钮文本颜色

2016-04-25 09:18 585 查看
上周五工作时遇到了一个需求,要求顶部有三个单选按钮,按下其中一个按钮时,该按钮的背景颜色及文本颜色均发生改变。

首先考虑用了RadioGroup,控件里面设置了三个RadioButton,水平排列。

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="150dp"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:orientation="horizontal" >

</RadioGroup>
RadioButton其他属性的设置就暂且不提,比较简单。

我在设计实现需求的时候,同样是考虑使用selector,这样代码会简洁直观方便。

一开始我是这样写selector的:将文字颜色和背景颜色分开,写两个selector。

背景颜色selector如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:color="#ffffff"></item>
<item android:state_checked="false" android:color="#3884F8"></item>

</selector>
文字颜色设置如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:color="#3884F8"></item>
<item android:state_checked="false" android:color="#ffffff"></item>

</selector>
然后在style.xml文件中设置:
<item name="android:textColor">@drawable/function_item_button_text_selector</item>
<item name="android:background">@drawable/item_button_selector</item>
结果查看布局显示结果时报错,
Failed to configure parser for D:\workspace\...\res\drawable\item_button_selector.xml
Exception details are logged in Window > Show View > Error Log
然后百思不得其解,后来百度前人的经验,知道设置背景颜色时候最好引用drawable,通过更改代码,然后就不再报错了。

现将正确代码粘贴下来,以供日后参考复习!

1. 在values文件夹下的strings.xml中添加代码:

<drawable name="unchecked">#456598</drawable>
<drawable name="checked">#ffffff</drawable>
2. drawable文件夹下的item_button_selector.xml文件中的代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/checked" android:state_checked="true"/>
<item android:drawable="@drawable/unchecked" android:state_checked="false"/>

</selector>
function_item_button_text_color文件中的代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:color="#3884F8"></item>
<item android:state_checked="false" android:color="#ffffff"></item>

</selector>
3. 在style.xml文件中对应的style中添加代码
<item name="android:textColor">@drawable/function_item_button_text_selector</item>
<item name="android:background">@drawable/item_button_selector</item>
大功完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: