1

将切换按钮设置为选中状态后,每次单击它时,它都处于相同状态。

自定义选择器:

<?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"            
        />

爪哇代码:

在按钮 onClick 侦听器中,isChecked始终为 false

boolean isChecked = ((ToggleButton) view).isChecked();      

Log.i(TAG, "isChecked : "+isChecked);
// **its always false and image also not changing.**

请建议这里有什么问题。

我看了一下这个答案,但没有用。

编辑:我做了一个具有相同场景的示例项目。它工作正常,但在我的项目片段中,它的行为不同。

4

2 回答 2

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" />

您为不同的状态设置了很多条件,这就是导致问题的原因(有关更多信息,请参见此处)。

按照您的编辑:

<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"            
        />

这肯定会为您解决!您直接使用地图图标,从不通过选择器。

于 2013-08-02T13:56:26.780 回答
-1

选择器有一个顺序(参见Drawable States)。

删除android:button属性。将 Selector 设置为您的背景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>
于 2013-08-02T14:04:56.647 回答