2

如何在同一个按钮上设置 android:onClick 方法和 OnTouchListener?我的应用程序真的需要这个。

我知道它们的区别,并且只使用 android:onClick 或 OnTouchListener 确实有效。一旦我尝试两者都做,只有 OnTouchListener 起作用。

对于不同布局中的不同功能,我需要它。

只是为了更好的理解。使用 android:onClick 我的意思是您在 xml 文件中分配此按钮的方法,例如 android:onClick="InitMethod"

4

1 回答 1

12

是的,你可以在同一个按钮上同时使用 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
于 2013-03-22T11:01:36.703 回答