无法使用选择器元素更改按钮png的焦点/状态

时间:2013-12-11 11:29:49

标签: android android-studio

Android Studio 0.3.7

您好,

我创建了2个按钮png并使用draw9patch修补。 按钮将指示按钮是按下还是未按下。

我的值目录

中有以下buttons_colours.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="false"
        android:state_pressed="true"
        android:drawable="@drawable/rd_btn_press"/> <!-- pressed -->

    <item android:state_focused="true"
       android:state_pressed="false"
       android:drawable="@drawable/rd_btn"/>        <!-- unpressed -->

    <!-- Default -->
    <item android:drawable="@drawable/rd_btn"/>

</selector>

在我的按钮布局中,我有这个:

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/rd_btn"/>

问题1:我在buttons_colours.xml中找到element selector must be declared

问题2:不确定这是否与问题1有关,但按下时按钮永远不会更改为我的rd_btn_press状态。

非常感谢任何建议,

1 个答案:

答案 0 :(得分:1)

您为按钮设置了错误的背景。将@drawable/rd_btn替换为`buttons_colours

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Start"
    android:id="@+id/button"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/buttons_colours"/>

另外,我不知道为什么选择器中的项目中有两种状态。这是一个工作选择器的例子:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/rd_btn_press"
          android:state_pressed="true" />
    <item android:drawable="@drawable/rd_btn"
          android:state_focused="true" />
    <item android:drawable="@drawable/rd_btn" />
</selector>