在項目開發過程中,我們有時候會碰到這樣的情況:在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就可以自由滾動了,耶~