android requestDisallowInterceptTouchEvent()使用时机问题?

我想了这个问题良久但也想不出答案。我在子控件中的dispatchTouchEvent代码里使用getParent().requestDisallowInterceptTouchEvent(true)这个方法为什么可以“及时”地修改子控件所有父控件的disallowIntercept变量,让其可以不执行自身的onInterceptTouchEvent(ev)方法?

出现问题的情景是:

我是在子控件的dispatchTouchEvent中使用这个方法,这个方法理应在按下事件传递进来到父控件,然后由父控件的onInterceptTouchEvent方法判断是否需要拦截,如果false不需要拦截的时候才会将事件传递下去,如果父控件的onInterceptTouchEvent本来就返回true(一些开源框架拦截了)进行拦截,那么子控件又如何可以在自己的dispatchTouchEvent中使用requestDisallowInterceptTouchEvent(true)方法及时地让父控件不执行自己的onInterceptTouchEvent方法,然后传递事件下去呢??这里很不明白。


父控件要拦截除了ACTION_DOWN以外的其他事件,代码如下:

public boolean onInterceptTouchEvent(MotionEvent event){
    int action = event.getAction();
    if(action == MotionEvent.ACTION_DOWN){
        return false;
    } else {
        return true;
    }
}

这样事件序列默认都来到了子控件,如果子控件不处理时,调用parent.requestDisallowInterceptTouchEvent(false),父控件会处理该事件序列



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值