本文介绍了onInterceptTouchEvent的ACTION_UP和ACTION_MOVE不会被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

日志从未登录 ACTION_UP ACTION_MOVE (这是我从缩短code示例中删除)

下面是我的code的缩短版:

 公共类ProfileBadgeView扩展的LinearLayout {    活动的行为;    公共ProfileBadgeView(上下文的背景下){
        超级(上下文);
    }    公共ProfileBadgeView(上下文的背景下,ATTRS的AttributeSet){
        这(背景下,ATTRS,0);
    }    公共ProfileBadgeView(上下文的背景下,ATTRS的AttributeSet,诠释defStyle){
        超(背景下,ATTRS,defStyle);
    }    公共无效initView(活动行为){
        //..在里面
    }
    @覆盖
    公共布尔onInterceptTouchEvent(MotionEvent EV){        如果(ev.getAction()== MotionEvent.ACTION_DOWN){
            logIntercept(ACTION DOWN);
        }否则如果(ev.getAction()== MotionEvent.ACTION_UP){
            logIntercept(ACTION_UP);
        }
        返回false;
    }    @覆盖
        公共布尔onTouchEvent(MotionEvent EV){
        返回true;
}
    私人无效logIntercept(obj对象){
        Log.i(this.getClass()getSimpleName()+INTERCEPT:,obj.toString());
    }}


解决方案

onInterceptTouchEvent 方法不经过 ACTION_DOWN 事件,因为你在 onTouchEvent 方法返回真正。因此,所有其他的事件在 onTouchEvent 发送,而不是在 onInterceptTouchEvent 更多:

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

这篇关于onInterceptTouchEvent的ACTION_UP和ACTION_MOVE不会被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-04 21:22