在触摸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>
答案 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>