4

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

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

<?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 获得这种行为,或者我应该使用不同的东西?

4

2 回答 2

0

您可能想查看Button/的标准 XML 资源ImageButton,它似乎是$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" />
于 2010-02-07T02:13:06.930 回答
0

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

换句话说,我是一个n00b。

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

于 2010-02-09T21:21:43.163 回答