自定义ToggleButton setChecked(..)问题

时间:2013-08-02 13:41:22

标签: java android togglebutton

将切换按钮设置为已检查状态后,每次点击它都会处于相同状态。

自定义选择器:

<?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中,它的表现不同。

2 个答案:

答案 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>