将切换按钮设置为已检查状态后,每次点击它都会处于相同状态。
自定义选择器:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/list_view_icon" android:state_checked="true"
android:state_pressed="true" android:state_enabled="true"/>
<item android:drawable="@drawable/list_view_icon" android:state_checked="true"
android:state_focused="false" android:state_enabled="true"/>
<item android:drawable="@drawable/map_view_icon" android:state_checked="false"
android:state_pressed="true" android:state_enabled="true"/>
<item android:drawable="@drawable/map_view_icon" android:state_checked="false"
android:state_focused="false" android:state_enabled="true"/>
切换按钮:
<ToggleButton
android:id="@+id/toggle_button_map_or_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/custom_selector"
android:textOn=""
android:textOff=""
android:background="@drawable/map_view_icon"
/>
java代码:
在按钮onClick监听器中,isChecked
始终为false
boolean isChecked = ((ToggleButton) view).isChecked();
Log.i(TAG, "isChecked : "+isChecked);
// **its always false and image also not changing.**
请在此处说明错误。
我看了this回答,但没有用。
编辑:我做了一个具有相同方案的示例项目。它的工作正常,但在我的项目Fragment中,它的表现不同。
答案 0 :(得分:1)
这是给你的:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/list_view_icon"
android:state_checked="true" />
<item android:drawable="@drawable/map_view_icon"
android:state_checked="false" />
您为不同的状态设置了很多条件,这就是造成问题的原因(有关详细信息,请参阅here)。
关注您的编辑:
<ToggleButton
android:id="@+id/toggle_button_map_or_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/custom_selector"
android:textOn=""
android:textOff=""
android:background="@drawable/selector_name"
/>
这将为您解决 FOR SURE !您正在直接使用地图图标,而不会通过选择器。
答案 1 :(得分:-1)
选择器有订单(请参阅Drawable States)。
删除android:button
属性。
将选择器设置为ToggleButton
:
<ToggleButton
android:id="@+id/toggle_button_map_or_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn=""
android:textOff=""
android:background="@drawable/custom_selector"/>
custom_selector.xml
看起来像:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Checked and pressed -->
<item
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/list_view_icon" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/map_view_icon" />
<!-- Checked -->
<item
android:state_checked="true"
android:drawable="@drawable/list_view_icon" />
<!-- Default (not checked) -->
<item
android:drawable="@drawable/map_view_icon"/>
</selector>