Android ImageButton状态没有变化

时间:2010-12-25 19:03:18

标签: android selector state imagebutton

我的ImageButton问题没有改变状态。当我点击,或者说触摸时,按钮保持为同一图像。这是我用作选择器的XML。

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
 android:state_focused="true"
 android:state_pressed="false"
 android:drawable="@drawable/pushed" />
<item
 android:state_focused="true"
 android:state_pressed="true"
 android:drawable="@drawable/pushed" />
<item
 android:state_focused="false"
 android:state_pressed="true"
 android:drawable="@drawable/pushed" />
<item  
 android:drawable="@drawable/default" />
</selector>

我从main.xml中调用此选择器为

android:background="@drawable/imagechoice"

imagechoice.xml是带选择器的文件

我不明白为什么这不起作用,除非我必须有一些java代码,但我见过的所有内容都应该有效。

5 个答案:

答案 0 :(得分:2)

使用ImageButton时,是不是你应该使用的'src'属性而不是背景?

答案 1 :(得分:2)

确保将相同的图像和按钮XML复制到每个“可绘制”文件夹(hdpi,ldpi,mdpi)中。 这就是我在我的应用程序上解决这个问题的方法。

祝你好运:)

答案 2 :(得分:1)

我有几乎相同的XML,它工作得很好。你确定你没有在代码中替换drawable吗?

另一方面,通过使用状态匹配的级联特性,可以简化XML。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/pushed"
          />
    <item android:state_focused="true"
          android:drawable="@drawable/pushed"
          />
    <item android:drawable="@drawable/default"
          />
</selector>

答案 3 :(得分:0)

这是我的xml按钮,上面有我自己的自定义图像,效果很好:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_off" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_pressed" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_pressed" />
<item android:drawable="@drawable/btn_off" />
</selector>

答案 4 :(得分:0)

请确保按照下面的说明设置图像按钮背景。我认为您没有将选择器设置为背景,而是将图像设置为背景。

 <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_up_selector"
        android:text="1"
        android:textColor="#fffafa"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="5dp"/>