Android 如何使用俯视图获得按钮的接触位置?

Android 如何使用俯视图获得按钮的接触位置?,android,view,gestureoverlayview,Android,View,Gestureoverlayview,我有一个自定义视图,它继承自GestureOverlayView,我想记录传递到此视图的所有MotionEvent 它工作得很好,但是当我的手势在交互式布局小部件上启动时(按钮,文本编辑…),我无法获得运动事件) 有没有办法绕过这种行为?既然你没有提到你的任何被剪掉的代码,我提出两种不同的解决方案,希望能对你有所帮助 一种方法是将小部件传递给asViewto方法并调用OnTouchListener button.setOnTouchListener(new OnTouchListener() {

我有一个自定义视图,它继承自
GestureOverlayView
,我想记录传递到此视图的所有
MotionEvent

它工作得很好,但是当我的手势在交互式布局小部件上启动时(
按钮
文本编辑
…),我无法获得
运动事件


有没有办法绕过这种行为?

既然你没有提到你的任何被剪掉的代码,我提出两种不同的解决方案,希望能对你有所帮助 一种方法是将小部件传递给as
View
to方法并调用
OnTouchListener

button.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {                      
                    break;
                }
                case MotionEvent.ACTION_UP: {                       
                    break;
                }

                case MotionEvent.ACTION_CANCEL:{                      
                    break;
                }
                }
                return false;
            }
        });
另一种方法是使用自定义构造函数手动创建MotionEvent 像这样:

static public CustomMotionEvent obtain(long downTime, long eventTime, int action,
        float x, float y, int State) {
}
根据API

创建新的MotionEvent,填充基本运动的子集 价值观此处未指定的有:设备id(始终为0)、压力 和尺寸(始终为1)、x和y精度(始终为1)以及边缘间隙 (始终为0)


您是否使用自定义控件类来编辑按钮和文本?不,这是基本的Android控件。谢谢,但我的目标是不更改控件的代码。我正在开发一个库,它将提供我的自定义视图和后台服务。我不能简单地修改我的按钮代码,这是一个挑战。