問題簡述
在將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; } }); }