ToggleButton可绘制颜色不变

时间:2014-08-20 07:22:49

标签: android

在触摸ToggleButton时,它的背景颜色不会改变。切换确实发生了,通过改变触摸文本来确认。但颜色总是保持白色,即未经检查的状态。我做错了什么?

ToggleButton:

<ToggleButton 
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:textOn="On"
            android:textOff="Off"
            android:textSize="20sp"
            android:background="@drawable/toggle_day"
            />

它的背景是一个可绘制的toggle_day.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"
    >
    <solid android:color="@color/toggle_day_bg_selector" />

</shape>

drawable的颜色来自选择器toggle_day_bg_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white"
        android:state_checked="false"/>
    <item android:color="@color/holo_blue_dark"
        android:state_checked="true"/>
</selector>

1 个答案:

答案 0 :(得分:2)

您在切换按钮上设置了形状,这就是选择器不起作用的原因。 设置选择器然后它的工作。

试试这种方式

ToggleButton:

<ToggleButton 
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:textOn="On"
            android:textOff="Off"
            android:textSize="20sp"
            android:background="@drawable/toggle_day_bg_selector"
            />

<强> toggle_day_bg_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:drawable="@drawable/toggle_day"
        android:state_checked="false"/>
    <item android:drawable="@drawable/toggle_daysecond"
        android:state_checked="true"/>
</selector>

<强> toggle_day.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"
    >
    <solid android:color="@color/white" />

</shape>

<强> toggle_daysecond.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"
    >
    <solid android:color="@color/holo_blue_dark" />

</shape>