我如何设置ImageButton只在我的手指触摸它时才会更改
问题描述:
我想创建一个事件来更改我的图像按钮的外观,但仅当它被按下时。到目前为止,我一直在使用onTouch监听器,但这只是永久性的改变它。我找不到任何按钮的onKyeUpListener()类型的东西。我如何设置ImageButton只在我的手指触摸它时才会更改
这样的事情是否存在?
解决
final ImageButton button = (ImageButton) findViewById(R.id.ImageButton01);
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == (MotionEvent.ACTION_UP)){
//Do whatever you want after press
}
else{
//Do whatever you want during press
}
return true;
}
});
答
从http://developer.android.com/guide/topics/ui/ui-events.html:
onTouch()...这被称为当用户执行作为一个合格的触摸事件的动作,包括按压,释放,或屏幕上的任何移动手势(在该项目的范围内)。
换句话说,onTouch
也被称为发布事件。看看MotionEvent.getAction()
。
答
而不是手动执行它,为什么不改变按钮的drawable?一般来说,drawable可以有多个状态,所以如果你改变某些状态的drawable(比如focus或selected),操作系统会自动处理所有的东西。
完美。谢谢。我会在4分钟内接受这个答案。 – NotACleverMan 2010-10-26 22:53:56
与使用StateListDrawable相比,此解决方案过度(如EboMike所述)。 – 2010-10-27 19:00:57
或丹尼尔。事实上,丹尼尔甚至还添加了一个链接。我会接受他的回答。在onTouch中手动执行它是过度杀毒和完全不可靠的。如果用户使用轨迹球选择按钮会怎么样? – EboMike 2010-10-27 20:52:46