为什么ViewGroup仅在ACTION_DOWN中获得onInterceptTouchEvent?根据文档,只要返回false,它就应该接收所有事件类型。
http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29
点#3。

示例代码:

public class MainActivity extends Activity {

    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new Container(this));
    }

    private class Container extends LinearLayout {

        public Container(Context context) {
            super(context);
            setBackgroundColor(0xFF0000FF);
        }

        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            Log.i(TAG, "onInterceptTouchEvent");
            int action = ev.getActionMasked();
            switch (action) {
            case MotionEvent.ACTION_DOWN:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");
                break;
            case MotionEvent.ACTION_MOVE:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_MOVE");
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_UP");
                break;
            }
            return super.onInterceptTouchEvent(ev);
        }
    }
}

最佳答案

我将回答我自己的问题:仅当父级具有从onTouchEvent返回“true”的 subview 时,才会调用onInterceptTouchEvent。一旦 child 返回true, parent 现在就有机会拦截该事件。

关于java - onInterceptTouchEvent仅获得ACTION_DOWN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13283827/

10-10 06:26