日志从不记录 ACTION_UP ACTION_MOVE (我从代码示例中删除以缩短)

这是我的代码的缩短版本:

 public class ProfileBadgeView extends LinearLayout {

    Activity act;

    public ProfileBadgeView(Context context) {
        super(context);
    }

    public ProfileBadgeView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ProfileBadgeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void initView(Activity act) {
        //..init
    }


    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            logIntercept("ACTION DOWN");
        } else if (ev.getAction() == MotionEvent.ACTION_UP) {
            logIntercept("ACTION_UP");
        }
        return false;
    }

    @Override
        public boolean onTouchEvent(MotionEvent ev) {
        return true;
}


    private void logIntercept(Object obj) {
        Log.i(this.getClass().getSimpleName() + " INTERCEPT :", obj.toString());
    }



}

最佳答案

您的 onInterceptTouchEvent 方法不会在 ACTION_DOWN 事件之后调用,因为您在 true 方法中返回了 onTouchEvent。所以所有其他事件都在 onTouchEvent 中发送,而不是在 onInterceptTouchEvent 中发送:



http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)

关于android - onInterceptTouchEvent 的 ACTION_UP 和 ACTION_MOVE 永远不会被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21288081/

10-09 00:00