ScrollView嵌套TextView,滑動滾動條衝突問題

在項目開發過程中,我們有時候會碰到這樣的情況:在ScrollView中嵌套TextView,TextView的高度固定的,當TextView要顯示的文字過多時,顯示不全,這時候我們會考慮直接讓TextView自帶滾動條來實現,即在xml文件中的TextView控件增加屬性:

<TextView
       android:id="@+id/tv_reason"
       android:layout_width="match_parent"
       android:layout_height="85dp"
       android:scrollbars="vertical"
     />

並在代碼中設置:

textview.setMovementMethod(ScrollingMovementMethod.getInstance());

但是當我們觸摸可以滾動的textview想滾動的時候,texview沒有滾動,而是整個佈局的scrollview開始滾動,那怎麼解決呢?在textview的觸摸監聽事件中攔截一下就可以了,代碼如下:

textview.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    //通知父控件不要干擾,即屏蔽父控件的該事件以及該事件之後的一切action
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                }
                if(event.getAction()==MotionEvent.ACTION_MOVE){
                    //通知父控件不要干擾,即屏蔽父控件的該事件以及該事件之後的一切action
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                }
                if(event.getAction()==MotionEvent.ACTION_UP){
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                }
                return false;
            }
        });

到此,嵌套在ScrollView中的TextView就可以自由滾動了,耶~

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