Android ScrollView滑动事件和子控件点击事件冲突

ε祈祈猫儿з 提交于 2019-12-10 04:06:35

问题描述:

父控件是一个ScrollView,然后上面排满了按钮,类似于支付宝

这样,按钮都有onclick事件,这样滑动的时候如果接触点在按钮上,ScrollView就滑不动了。

解决方案是重写ScrollView 的onInterceptTouchEvent方法:

public class PersonScrollView extends ScrollView{

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

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_MOVE) {
                return true;
        }
        return false;
    }
}

原理很简单,就是事件在响应链里面是一直传递到叶子控件才进行处理,而在我的这个场景里,触点在按钮上的时候事件的叶子节点就是按钮,所以ScrollView不会响应滑动事件,解决思路就是在滑动事件传递到ScrollView的时候就进行拦截响应,不再往下传递。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!