關於ScrollView嵌套ListView

今天工做中須要這個,之前也寫過這樣的需求可是沒有記錄下來,今天趁機記錄一下。也但願對你們工做有幫助!謝謝。android

來電與主題無關的,要實現ScrollView滾動條的隱藏,有兩種方法,ide

一種是在XML的ScrollView佈局中加入屬性android:scrollbars="none"佈局

另外一種則是在代碼中獲取ScrollView後進行scroll.setVerticalScrollBarEnabled(false);測試

 

下面來講下ScrollView如何嵌套ListViewspa

按常理,ScrollView套ListView會存在兩個問題:

1.裏面的listView高度沒法算出來,一般只能顯示listview的其中一行
2.listview不能滾動code

 

爲何ScrollView嵌套ListView會出現問題,只顯示一個item的問題。blog

這個是計算ListView高度產生的問題。ip

咱們能夠這樣解決。get

第一給ListView一個固定的高度。it

例如設置android:layout_height="200dip",那麼能夠解決,可能會影響美觀。

 

第二給ScrollView設置屬性:android:fillViewport="true"
測試的時候發現,若是ListView加載的數據很少的話,確實能夠解決,可是當ListView加載的數據較多的時候,仍舊沒法顯示徹底,而且這個時候ListView自身也沒法滾動了。

 

第三,我也是按照這個方法的,用代碼從新測量下ListView的高度。

 1    private void initLoad() {
 2         ListLoadAdapter adapter = new ListLoadAdapter();
 3         lvLoan.setAdapter(adapter);
 4         setListViewHeightBasedOnChildren(lvLoan);
 5     }
 6     public void setListViewHeightBasedOnChildren(ListView listView) {
 7         // 獲取ListView對應的Adapter
 8         ListAdapter listAdapter = listView.getAdapter();
 9         if (listAdapter == null) {
10             return;
11         }
12 
13         int totalHeight = 0;
14         for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
15             // listAdapter.getCount()返回數據項的數目
16             View listItem = listAdapter.getView(i, null, listView);
17             // 計算子項View 的寬高
18             listItem.measure(0, 0);
19             // 統計全部子項的總高度
20             totalHeight += listItem.getMeasuredHeight();
21         }
22 
23         ViewGroup.LayoutParams params = listView.getLayoutParams();
24         params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
25         // listView.getDividerHeight()獲取子項間分隔符佔用的高度
26         // params.height最後獲得整個ListView完整顯示須要的高度
27         listView.setLayoutParams(params);
28     }
相關文章
相關標籤/搜索