Android開發 解決EditText與NestedScrollView 滾動沖突問題


問題簡述

  在將EditText套進NestedScrollView的情況下,EditText輸入了多行內容后,無法觸摸滾動到第一行

問題原因

  在將EditText套進NestedScrollView的情況下,NestedScrollView會攔截消費屏幕的移動觸摸事件,導致EditText無法獲取移動觸摸事件.

解決辦法

在activity里寫EditText的觸摸監聽事件

private void initScrollHandler(){
        mEditOpinionContent.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //canScrollVertically()方法為判斷指定方向上是否可以滾動,參數為正數或負數,負數檢查向上是否可以滾動,正數為檢查向下是否可以滾動
                if (mEditOpinionContent.canScrollVertically(1) || mEditOpinionContent.canScrollVertically(-1)){
                    v.getParent().requestDisallowInterceptTouchEvent(true);//requestDisallowInterceptTouchEvent();要求父類布局不在攔截觸摸事件
                    if (event.getAction() == MotionEvent.ACTION_UP){ //判斷是否松開
                        v.getParent().requestDisallowInterceptTouchEvent(false); //requestDisallowInterceptTouchEvent();讓父類布局繼續攔截觸摸事件
                    }
                }
                return false;
            }
        });

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM