我们可以在Android xmlLayout中使用state_selected和state_pressed功能来获取ImageButton吗?

时间:2013-10-24 10:44:03

标签: android xml imagebutton android-drawable android-selector

这是参考以下链接中提出的问题

Android ImageButton with a selected state?

我们如何将它用作选择器?如果我们有4个背景图片,例如:

select_all_up.png,select_all_down.png deselect_all_up.png,deselect_all_down.png

我已经使用 state_selected 属性检查了它,但它似乎无效。 另一个选择是使用复选框而不是图像按钮,但我还在研究是否有替代方案。???

我只是Android的初学者,只是发现事情的运作方式。希望对此主题有所帮助。在此先感谢。

这是我为它写的选择器文件:     

<item android:drawable="@drawable/select_all_down" android:state_pressed="true" android:state_selected="false"/>
<item android:drawable="@drawable/select_all_up" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/deselect_all_down" android:state_pressed="true" android:state_selected="true"/>
<item android:drawable="@drawable/deselect_all_up" android:state_pressed="false" android:state_selected="true"/>

并将此drawable用作图像按钮的背景:

。 。 。

    <ImageButton
        android:id="@+id/selectAllImageButton"
        android:layout_width="300dp"
        android:layout_height="35dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@drawable/buttonanim_select_all_button"
        android:contentDescription="@string/todo"/>

。 。 。

我希望在XML文件本身处理这个问题,而不是代码处理它。

1 个答案:

答案 0 :(得分:0)

我使用了ToggleButton概念解决了这个问题。但仍然想知道为什么ImageView无法获得这些属性。

<ToggleButton
        android:id="@+id/selectAllImageButton"
        android:layout_width="300dp"
        android:layout_height="35dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@drawable/buttonanim_select_all_button"
        android:contentDescription="@string/todo"
        android:textOn="@string/empty_text"
        android:textOff="@string/empty_text"/>

仍然......效果很好,令我满意。