我正在尝试这样做,只要用户触摸按钮,它就会显示一个图像,当用户释放按钮时,它会返回到默认图像。
我正在尝试使用选择器来实现这一目标:
<?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获得这种行为,还是应该使用不同的东西?
答案 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。