Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中检测对话框内按钮上的手势_Android_Android Dialog_Touch Event_Gesturedetector_Onfling - Fatal编程技术网

如何在Android中检测对话框内按钮上的手势

如何在Android中检测对话框内按钮上的手势,android,android-dialog,touch-event,gesturedetector,onfling,Android,Android Dialog,Touch Event,Gesturedetector,Onfling,我曾尝试扩展手势检测器。SimpleOnGestureListener类用于检测对话框上的手势,它对我有效,但它不检测单键点击、按下、滚动等。对话框中任何按钮、复选框、单选按钮上的事件,它只在触摸对话框内的白色区域时检测这些事件。有人知道如何在对话框中检测各种按钮和其他控件上的手势吗 以下是我的对话框和手势侦听器的代码片段: public class SimpleDialog extends Dialog { private GestureDetector gestureDetecto

我曾尝试扩展
手势检测器。SimpleOnGestureListener
类用于检测
对话框上的手势,它对我有效,但它不检测单键点击、按下、滚动等。对话框中任何按钮、复选框、单选按钮上的事件,它只在触摸对话框内的白色区域时检测这些事件。有人知道如何在对话框中检测各种按钮和其他控件上的手势吗

以下是我的对话框和手势侦听器的代码片段:

public class SimpleDialog extends Dialog {

    private GestureDetector gestureDetector;

    public SimpleDialog(Context context) {
        super(context);
        gestureDetector = new GestureDetector(context, new MyGestureDetector());
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_simple);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }

    private class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            System.out.println( "touch event onFling()");
            return false;
        }

        MyGestureDetector() {
            super();
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            System.out.print("touch event onSingleTapUp()");
            return super.onSingleTapUp(e);
        }

        @Override
        public void onLongPress(MotionEvent e) {
            super.onLongPress(e);
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            System.out.println("touch event onScroll()");
            return super.onScroll(e1, e2, distanceX, distanceY);
        }

        @Override
        public void onShowPress(MotionEvent e) {
            super.onShowPress(e);
        }

        @Override
        public boolean onDown(MotionEvent e) {
            System.out.println("touch event onDown()");
            return true;
        }

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            return super.onDoubleTap(e);
        }

        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            return super.onDoubleTapEvent(e);
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            return super.onSingleTapConfirmed(e);
        }

        @Override
        public boolean onContextClick(MotionEvent e) {
            return super.onContextClick(e);
        }
    }
}

这篇帖子可能会有帮助:@SagarDas我已经试过了,但没有用。