Android:当用户释放按钮时,如何切换ImageButton的图像?

时间:2010-02-07 00:12:55

标签: android user-interface layout imagebutton

我正在尝试这样做,只要用户触摸按钮,它就会显示一个图像,当用户释放按钮时,它会返回到默认图像。

我正在尝试使用选择器来实现这一目标:

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

我已经尝试了一些选择器的东西,但它总是产生相同的行为:按钮从默认图像开始,然后我按下它,它变为“record_on”图像,它永远不会回到我放手时的默认图片。

有没有办法通过ImageButton获得这种行为,还是应该使用不同的东西?

2 个答案:

答案 0 :(得分:0)

您可能希望查看Button / ImageButton的标准XML资源,该资源似乎是$ANDROID_HOME/platforms/$PLATFORM/data/res/drawable/btn_default.xml(其中$ANDROID_HOME是您安装SDK的地方$PLATFORM是您感兴趣的API版本。

他们的“正常”状态是:

<item android:state_enabled="true"
    android:drawable="@drawable/btn_default_normal" />

答案 1 :(得分:0)

事实证明我在onTouch()实现中过早地使用了触摸事件。当我看到一个ACTION_UP事件时,我通过返回true来消耗它,因此事件的传播在选择器获取之前就已经停止了。通过返回false,选择器行为将启动,图像将返回默认值。

换句话说,我是一个n00b。

我之所以没注意到这一点的原因是因为ACTION_DOWN事件似乎工作正常,而且我也在使用那个。后来我发现ACTION_MOVE事件,而不是ACTION_DOWN事件,导致按钮的图像发生变化,因为我为所有其他事件返回false。