Android ScrollView嵌套子View時的滑動衝突問題

一、問題描述

今天遇到了一個view衝突,一個顏色選擇器放在了一個ScrollView下面,導致滑動衝突,

二、問題分析

這裏就需要我們對view的事件分發有一些瞭解

  1. dispatchTouchEvent:負責事件的分發
  2. onInterceptTouchEvent:判斷是否攔截某個事件
  3. onTouchEvent:消費點擊事件

三、問題解決

這裏涉及到一個方法,例如我們在ACTION_DOWN事件中加上 getParent().requestDisallowInterceptTouchEvent(true),表示在DOWN的時候屏蔽父類的事件屏蔽

所以經過下面兩個步驟即可解決衝突問題。

1.當父類佈局滑動時,父類攔截事件,子類佈局.getParent().requestDisallowInterceptTouchEvent(true);

2.當子類佈局滑動時,父類不攔截事件,子類佈局.getParent().requestDisallowInterceptTouchEvent(true);
 

       // 解決scrollview和子view滑動衝突問題
        binding.ratundityFl.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                binding.rgbInsideIv.getParent().requestDisallowInterceptTouchEvent(false);
                return false;
            }
        });
        binding.rgbInsideIv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                binding.rgbInsideIv.getParent().requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章