ScrollView巢狀Listview/RecyclerView內容顯示不全
1.起因
最近一個專案中,有一個需求是要在ScrollView中巢狀好幾個RecyclerView。然後問題來了,五個RecyclerView(PS:設計太奇葩)中的第二個RecyclerView總是只顯示一行資料。這個問題和以前ScrollView巢狀ListView很像,估計是一樣的問題。
2.原因
在ScrollView中巢狀巢狀ListView空間,無法正確的計算ListView的大小。但是這裡有一點沒想明白的是,我嵌套了幾個RecyclerView,只有第二個RecyclerView會出現只顯示一條資料的情況,其他幾個RecyclerView都能正常執行。
3.解決辦法
重寫RecyclerView的onMeasure方法
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthSpec, expandSpec);
}
首先是Integer.MAX_VALUE,32位數,結構如下:
Integer.MAX_VALUE的前兩位儲存的是測量模式,後面的資料才是大小值,也就是2147483647,基本就是無限大小。
然後是測量模式:
MeasureSpec.EXACTLY:精確模式,當設定了寬/高為50dp這種指定值或者為match_parent/fill_parent時就是這種模式。父元素確定了子元素的大小。
MeasureSpec.AT_MOST:最大(至多)模式,在這裡設定為了Integer.MAX_VALUE>>2=2147483647,也就是最大不超過這個值,可以小於。
MeasureSpec.UNSPECIFIED:未指定模式,可以得到任意想要的大小。
總結:重寫Listview/RecyclerView的onMeasure方法,通過最大測量模式得到值為Integer.MAX_VALUE>>2的值,將該值設為Listview/RecyclerView的高度,因為這個數值很大,因此可以直接將Listview/RecyclerView的內容全部顯示完。
缺點:使用這種方式雖然解決了問題,但是當Listview/RecyclerView的資料量很大的時候,會導致資料一次載入完,失去了Listview/RecyclerView複用的優勢。
相關推薦
ScrollView巢狀Listview/RecyclerView內容顯示不全
1.起因 最近一個專案中,有一個需求是要在ScrollView中巢狀好幾個RecyclerView。然後問題來了,五個RecyclerView(PS:設計太奇葩)中的第二個RecyclerView總是只顯示一行資料。這個問題和以前ScrollView巢狀Lis
ScrollView巢狀ListView導致item顯示不全的原因
一句話總結: ScrollView重寫了它的父類FrameLayout的measureChild和measureChildWithMargins方法,使傳入子類的HeightMeasureSpec的模式為UNSPECIFIED,導致listview計算高度時跳
ScoreView巢狀Listview或GradView顯示不全問題解決
public class ListviewUtil { public static void setListViewHeightBasedOnChildren(ListView listView) { // 獲取ListView對應的Adapter
簡單解決RecyclerView巢狀的RecyclerView條目顯示不全和寬度不能鋪滿
第一個RecyclerView的Adapter @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewT
使用divider解決RecyclerView內容顯示不全的問題
使用第三方自定義IdeaScrollView包裹一個LinearLayout,LinearLayout中包裹RecyclerView和divider,divider寬度固定取到RecyclerView的內容顯示完整為止 <com.test.view.IdeaScrollView an
解決Scrollview巢狀Recyclerview,Gridview等出現內容顯示不全等為
在自定義View和ViewGroup的時候,我們經常會遇到int型的MeasureSpec來表示一個元件的大小,這個變數裡面不僅有元件的尺寸大小,還有大小的模式。 這個大小的模式,有點難以理解。在系統中元件的大小模式有三種: 1.精確模式(MeasureSpec.EXAC
ScrollView巢狀ListView,顯示不全和位置不是頂部的解決辦法
(1)首先寫一個listview的頁面,用ScrollView進行巢狀,注意ScrollView裡面只能有一個佈局屬性,多個可以用Linearout進行包含 <?xml version="1.0" encoding="utf-8"?> <RelativeL
Scrollview巢狀listView資料顯示不正常問題
ScrollView 巢狀listview 資料顯示不全的問題解決方案: 提供一種比較中意的解決方案,不需要自己去測量高度,省了很多事。具體方案如下: 定義一個自己的listView,重寫屢試不爽。如果即使重寫之後還不能顯示完全,在加上一句 scrollView.sc
解決ScrollView巢狀ListView顯示不完全和滑動衝突的問題
</pre>在開發中我們往往會遇到這樣奇葩的需求,讓一個ScrollView巢狀ListView,那麼我們就會遇到這樣一個問題,就是listView 顯示不完全和滾動衝突的問題。下面就來解決一下這個問題</p><p></p>&
ScrollView巢狀ListView內容居中顯示
前段時間寫了一個ScrollView巢狀ListView,ListView通過重寫onMeasure方法設定了自適應ScrollView的高度,但是ScrollView裡邊的內容不是從開始位置顯示,如下圖: 在網上狠狠地搜尋了一番,有說用scrollView.smoothScro
ScrollView巢狀RecyclerView、ScrollView巢狀Listview、ScrollView巢狀各種佈局,預設不在頂部和回到頂部的解決方法;
如果:ScrollView.scrollTo(0,0);ScrollView.fullScroll(View.FOCUS_UP) ;ScrollView.smoothScrollTo(0, 0);這三種方法都解決不了你的問題,那麼請往下看;佈局有點複雜:最外層是SwipeRe
真正解決ScrollView巢狀RecyclerView的顯示不全及滑動問題
很多人都會遇到ScrollView巢狀RecyclerView巢狀的問題,各種巢狀模式,這種巢狀會出現以下幾種問題: 1、ScrollView和RecyclerView兩者都會滑動,而且有時候,滑動會衝突 2、RecyclerView顯示不全
Android4.x中ScrollView巢狀ListView,ListView不能完全顯示總結、解決辦法
當ScrollView巢狀ListView時,使用listview設定setAdpter後,需要重新設定listview控制元件的寬高。在網上嘗試了一些方法,重新設定高度之後,仍然不能完全顯示,經過除錯,使用下面的方法,可以使ListView完全顯示。在setAdapter
解決ScrollView巢狀ListView不滑動,只顯示一條,ListView滑到頂部問題
問題:在ScrollView中巢狀ListView,出現的效果是ListView只顯示一行,無論高度設定的是match_parent還是wrap_content。五種任你選。 1、設定ListView的高度為固定值 這樣ListView可以滑動,整體Sc
關於Scrollview巢狀RecyclerView高度顯示不全
前言 做 Android開發我們經常會遇到這種ScrollView巢狀Listview或者 巢狀RecyclerView的需求,當我們搜尋解決方案時經常會遇到這句話 you should never put a scrollable view insid
解決ScrollView巢狀ListView或GridView置頂顯示問題
今天無意間發現一個小小的問題,當我們使用ScrollView裡面巢狀ListView或GridView的時候頁面顯示會停留在ListView的item當前,而不是置頂顯示整個頁面,不要慌,解決辦法來了。 1.在java程式碼中ListView或GridView初始化後面新增以下程式碼: sc
RecyclerView巢狀RecyclerView item 顯示不全及資料不顯示問題
今天在做專案中的商品屬性選擇彈框,用RecyclerView巢狀RecyclerView來實現,發現子RecyclerView item資料不顯示並且item數不全,如圖: 查了網上的解決方案。改為 父RecyclerView繫結佈局方式: return new AttributesV
從原始碼角度解析 - ScrollView巢狀ListView只顯示一行的問題
<ScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent">
scrollview巢狀listview進頁面不在頂部
scrollview和listview衝突導致進頁面就不是在頂部的問題 解決方案1:ScrollView.post() sv_container.post( new Runnable() { public void run() {
ScrollView巢狀ListView、RecyclerView,使其高度自適應
1、針對ScrollView巢狀ListView時只顯示第一個item高度的bug,可在activity裡動態修改ListView的高度(即計算每個item和分割線的高度後進行相加得到總高度),在setAdapter之後呼叫下面這個函式即可。 值得注意的是,此時ListVi