ScrollView嵌套ListView滑動衝突的解決方案


話不多說,先上圖.......

可以看到在Srcollview中嵌套了一個listview,我們知道如果按照常規方法,這兩個控件的滑動是肯定會衝突的,會造成listview只能顯示一條item

網上大部分解決方案都是讓listview展示最大條數,這種方案雖然能完全展示listview的所有數據,但是itemview無法複用,如有需要大家可以自行百度,這裏不討論這種解決辦法...

那麼如何才能實現外面的ScrollView和裏面的ListView都能滾動而互不影響呢?

查看ScrollView中有一個繼承了Viewgroup父類的方法requestDisallowInterceptTouchEvent(boolean);

這個方法的詳細介紹請看: android 事件處理機制之requestDisallowInterceptTouchEvent

這個方法是設置是否交出ontouch權限的,如果讓外層的scrollview.requestDisallowInterceptTouchEvent(false);那麼外層的onTouch權限會失去,這樣裏面的listview就能
拿到ontouch權限了,listView也就能滾了。
權限只有一個,如果要支持兩個view都能滾動,那麼當手指觸到listview的時候,讓外面的scrollview交出權限,當手指鬆開後,外面的scrollview重新獲得權限。這樣ok了。

因爲代碼量太少就不貼出具體代碼了,下載一個demo跑一跑簡單又明瞭。。。。


注:在MainActivity中生成這個內部Listview的需要將其外層的scrollview傳遞給該listview,同時需要按照實際情況給改listivew設置一個高度,否則無法展示出來。該listview可以嵌套多層沒有滑動衝突的viewgroup

下面貼出下載鏈接:ScrollView嵌套ListView滑動衝突的解決方案

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