美文网首页
解决EditText与ScrollView滑动冲突问题

解决EditText与ScrollView滑动冲突问题

作者: 微风细雨007 | 来源:发表于2017-11-08 11:15 被阅读84次

    ScrollView的滑动冲突并不少见,只要了解触摸事件分发机制就很好办了。

    Activity中进行触摸事件监听

    参考博客:
    完美解决EditText和ScrollView的滚动冲突(上)
    完美解决EditText和ScrollView的滚动冲突(下)
    这篇博客讲解了在Activity中进行触摸事件判断,如果是在对应的子控件,就不让父控件拦截子控件滑动。
    但我的那个页面有6个EditText指定起来就比较费劲了,所以只能采取第二种方法了。

    自定义View实现不受父控件拦截

    只需要在分发事件中加入
    getParent().requestDisallowInterceptTouchEvent(true);
    这句话是告诉父view,我的事件自己处理
    示例

    public class ScrollEditText extends android.support.v7.widget.AppCompatEditText {
    
        public ScrollEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            getParent().requestDisallowInterceptTouchEvent(true);
            return super.dispatchTouchEvent(event);
        }
    }
    

    还有这样的

     public boolean onTouch(View v, MotionEvent event) {  
             switch (event.getAction()) {  
             case MotionEvent.ACTION_MOVE:   
                 pager.requestDisallowInterceptTouchEvent(true);  
                 break;  
             case MotionEvent.ACTION_UP:  
             case MotionEvent.ACTION_CANCEL:  
                 pager.requestDisallowInterceptTouchEvent(false);  
                 break;  
             }  
        }  
    

    参考 : android 事件处理机制之requestDisallowInterceptTouchEvent

    相关文章

      网友评论

          本文标题:解决EditText与ScrollView滑动冲突问题

          本文链接:https://www.haomeiwen.com/subject/cpsemxtx.html