1. 程式人生 > >解決Android中ScrollView裡巢狀listview時,listview不能不能滾動的問題

解決Android中ScrollView裡巢狀listview時,listview不能不能滾動的問題

       我們在Android的佈局中有時會使用到ScrollView,然後在ScrollView中再巢狀listview,但是這樣就會導致listview獲取焦點失敗不能滾動(具體原理可自行搜尋Android的觸控事件的分發機制),在搜尋解決方案時發現需要重寫ScrollView和listview,但是我寫程式碼的原則就是能省事兒就省,所以就按照一貫的思路,當我們在listview上摁下時,讓ScrollView失去焦點,然後在我們手指擡起來後再讓ScrollView獲取焦點即可;具體程式碼如下:

//解決在滾動檢視中巢狀listview,listview不能滾動的問題
listItemView
.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { // 當手指觸控listview時,讓父控制元件焦點,不能滾動 case MotionEvent.ACTION_DOWN: scrollView.requestDisallowInterceptTouchEvent(true); case
MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_CANCEL: // 當手指鬆開時,讓父控制元件重新獲取焦點 scrollView.requestDisallowInterceptTouchEvent(false); break; } return false; } });

當然心有餘力重寫控制元件也可:下面提供幾個連結,另外謝謝他們的一些方法(本人未做測試,不保證能否使用大笑

https://blog.csdn.net/leochen315531813/article/details/48683975

https://blog.csdn.net/sinat_28891771/article/details/71424975