是的,你可以在同一个按钮上同时使用 onClick 和 onTouch,但是 OnTouch 回调你会得到像 ACTION_MOVE、ACTION_UP、ACTION_DOWN 等的motionEvent,不要忘记在 onTouch 回调中返回 false ( Details )。请参考以下代码
Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.d("test", "ontouch");
return false;
}
});
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.d("test", "onclick");
}
});
只需分别在回调 onTouch 和 onClick 中做你想做的操作。请注意单击是用户按下按钮并释放时执行的操作,但当用户按下它时将进行触摸。
因此,单击一下,日志将是这样的。1.ACTION_DOWN, 2.ACTION_UP 3.点击
03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): onclick