2011-08-17 130 views
9

我的toggle-Button对于每个状态(红色和白色)都有不同的彩色背景。 现在我需要在激活时更改切换按钮文本的颜色(红色/白色)。 用xml我只是无法让它工作,也许任何人有一个想法我做错了什么?如何更改状态更改时Android ToogleButton的文本颜色?

我在布局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="@drawable/sort_button_red_right_43" /> 
<item android:drawable="@drawable/sort_button_white_right_43" /> 
</selector> 

和XML的颜色:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- pressed --> 
<item android:state_pressed="true" android:color="#4f5459" /> 

<!-- focused --> 
<item android:state_focused="true" android:color="#4f5459" /> 

<!-- default --> 
<item android:color="#ffffff" /> 

<!-- trying these out, but none works --> 
<item android:state_checked="true" android:color="#ff0000" /> 
<item android:state_enabled="true" android:color="#ff00dd" /> 
<item android:state_selected="true" android:color="#ff00dd" /> 
<item android:state_active="true" android:color="#ff00dd" /> 

</selector> 

回答

-1

你必须使用的东西,下面的例子,移动要包含在项目标签中的颜色属性。

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

<item android:state_pressed="true" > 
    <shape> 
     <corners 
      android:topLeftRadius="3dp" 
      android:bottomLeftRadius="0.1dp" 
      android:topRightRadius="0.1dp" 
      android:bottomRightRadius="3dp" /> 
     <gradient 
      android:startColor="#d0785e" 
      android:endColor="#000000" 
      android:angle="270" /> 
    </shape> 
</item> 

<item android:state_focused="true" > 
    <shape> 
     <corners 
      android:topLeftRadius="3dp" 
      android:bottomLeftRadius="0.1dp" 
      android:topRightRadius="0.1dp" 
      android:bottomRightRadius="3dp" /> 
     <gradient 
      android:endColor="#ffffff" 
      android:startColor="#b9b9b9" 
      android:angle="270" /> 
    </shape> 
</item> 

<item android:state_enabled="false"> 
    <shape> 
     <corners 
      android:topLeftRadius="3dp" 
      android:bottomLeftRadius="0.1dp" 
      android:topRightRadius="0.1dp" 
      android:bottomRightRadius="3dp" /> 
     <gradient 
      android:startColor="#f0aa9f" 
      android:endColor="#e21f00" 
      android:angle="270" /> 
    </shape> 
</item> 

<item>   
    <shape> 
     <corners 
      android:topLeftRadius="3dp" 
      android:bottomLeftRadius="0.1dp" 
      android:topRightRadius="0.1dp" 
      android:bottomRightRadius="3dp" /> 
     <gradient 
      android:startColor="#fe9c69" 
      android:endColor="#fc5700" 
      android:angle="270" /> 
    </shape> 
</item> 


</selector> 
+0

感谢您的帮助迈克·d,我错过了我可以通过 得到选中/检查按钮状态“机器人:state_checked =”真“”和 机器人:state_checked =“false”;-) – gue

15

发现: 现在,我使用android:state_checked="true"android:state_checked="false"

颜色的xml:

<?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 android:state_checked="false" android:color="#000000" /> 
</selector> 
+1

注意:xml文件必须位于'color'res文件夹中 –