ScrollView中巢狀GridView,Listview的辦法
按照android的標準,ScrollView中是不能巢狀具有滑動特性的View的,但是有時如果設計真的有這樣做的需要,或者為了更方便簡單的實現外觀(比如在外在的大布局需要有滑動的特性,並且內部有類似於List的UI結構,那麼ListView
+ Adpater的方式來實現裡面的效果就很方便,算是違規抄近道的一種方式吧),有時就會不得不採用這種怪異的組合方式。
先說下這種方式如果不做特殊處理時會出現的衝突和問題:
1,在SrollView中巢狀ListView,ListView的顯示會有問題,只顯示一行或顯示效果與預期不同,這是因為android禁止這樣使用,放入ScrollView中的ListView的高度是無法計 算的。
2,巢狀中的子ListView和GridvIew是無法滑動的,因為子控制元件的滑動事件會被外面的ScrollView吃掉,如果想讓子控制元件可以滑動,只能強行的擷取滑動的相關事件了。
言歸正傳,巢狀的解決方案:
1,第一種方案,也是我比較推薦的方案,就是重寫ListView與GridView,讓其失去滑動特性:
html程式碼
2,第二種方案,也是網上流行的一種解決辦法,人工計運算元控制元件的尺寸,解決辦法:
在listview.setAdapter()之後呼叫Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。
html程式碼
原理就是:設定完ListView的Adapter後,根據ListView的子專案重新計算ListView的高度,然後把高度再作為LayoutParams設定給ListView,這樣它的高度就正確了,通過人工算取控制元件的應有高度,再設定給ListView
注意:這個方案中子ListView的每個Item必須是LinearLayout,不能是其他的,因為其他的Layout(如RelativeLayout)沒有重寫onMeasure(),所以會在onMeasure()時丟擲異常。
最後,建議大家還是少用這樣的設計,畢竟這種方式是不標準與不規範的。
原文連結:http://www.eyeandroid.com/thread-13230-1-55.html
先說下這種方式如果不做特殊處理時會出現的衝突和問題:
1,在SrollView中巢狀ListView,ListView的顯示會有問題,只顯示一行或顯示效果與預期不同,這是因為android禁止這樣使用,放入ScrollView中的ListView的高度是無法計 算的。
2,巢狀中的子ListView和GridvIew是無法滑動的,因為子控制元件的滑動事件會被外面的ScrollView吃掉,如果想讓子控制元件可以滑動,只能強行的擷取滑動的相關事件了。
言歸正傳,巢狀的解決方案:
1,第一種方案,也是我比較推薦的方案,就是重寫ListView與GridView,讓其失去滑動特性:
html程式碼
2,第二種方案,也是網上流行的一種解決辦法,人工計運算元控制元件的尺寸,解決辦法:
在listview.setAdapter()之後呼叫Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。
html程式碼
原理就是:設定完ListView的Adapter後,根據ListView的子專案重新計算ListView的高度,然後把高度再作為LayoutParams設定給ListView,這樣它的高度就正確了,通過人工算取控制元件的應有高度,再設定給ListView
注意:這個方案中子ListView的每個Item必須是LinearLayout,不能是其他的,因為其他的Layout(如RelativeLayout)沒有重寫onMeasure(),所以會在onMeasure()時丟擲異常。
最後,建議大家還是少用這樣的設計,畢竟這種方式是不標準與不規範的。
原文連結:http://www.eyeandroid.com/thread-13230-1-55.html
相關文章
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- ListView巢狀GridView解決方案View巢狀
- android listView巢狀gridview的使用心得AndroidView巢狀
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- 四種方案解決ScrollView巢狀ListView問題View巢狀
- Android 解決ListView巢狀GridView、GridView顯示不正常的方法AndroidView巢狀
- ScrollView中巢狀ListView,TextView只顯示一行的高度解決方案巢狀TextView
- Android中ExpandableListView中巢狀ListViewAndroidView巢狀
- 完美解決ScrollView巢狀ListView滑動衝突(有圖有真相)View巢狀
- 【Android】ScrollView巢狀ListView只顯示第一行問題原理分析AndroidView巢狀
- 巢狀ScrollView問題解決思路巢狀View
- Android-GridView與ScrollView共用的衝突問題(類似ListView)AndroidView
- android listview and scrollviewAndroidView
- scrollview 套gridview的問題View
- react native ScrollView巢狀WebView 互動問題React Native巢狀WebView
- 解決ScrollView巢狀RecyclerView滑動卡頓問題View巢狀
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- ScrollView中用ListView的事件衝突View事件
- 解決Flutter的ListView巢狀ListView滑動衝突以及無限高度問題FlutterView巢狀
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- ScrollView巢狀LinearLayout佈局不能撐滿全屏的問題View巢狀
- 解決ScrollView巢狀ViewPager出現的滑動衝突問題巢狀Viewpager
- ScrollView與ListView合用問題(正確計算Listview的高度)View
- UWP 取消GridView、ListView滑鼠選中、懸停效果View
- JavaScript中if巢狀assert的方法JavaScript巢狀
- 小程式data巢狀寫法巢狀
- 定製gridview使其在listview中當作item使用View
- NestedScrollView巢狀RecyclerView時滑動不流暢問題的解決辦法View巢狀
- 從原始碼角度分析SrcollView巢狀ListView顯示不全的問題原始碼View巢狀
- 仿淘寶、京東拖拽商品詳情(可巢狀ViewPager、ListView、WebView、FragmentTabhost)巢狀ViewpagerWebViewFragment
- Repeater中巢狀使用Repeater巢狀
- 多層巢狀表型別語法巢狀型別
- ListView與ScrollView衝突,計算ListView的高度Item,然後重繪View
- Adapter的getViewTypeCount和getItemViewType及-ListView/GridViewAPTView
- Scrollview 和 內部 recycleview 高度固定時巢狀衝突的一種解決方法View巢狀
- Linux的中斷可以巢狀嗎?Linux巢狀
- iOS block巢狀block中weakify的使用iOSBloC巢狀
- LESS巢狀中的Mixins和classes巢狀