android中scrollview与listview共存

来源:互联网 发布:数学排列组合公式算法 编辑:程序博客网 时间:2024/06/05 03:32

来源:http://www.oschina.net/code/snippet_194968_7149

ScrollView与ListView共存会存在滚动的问题,并且ListView只显示一个半Item。 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item。 因此我们可以计算出这个ListView的总高度,再将它设置到ListView中,那么之前的滚动,高度问题也就不存在了。

代码] 获取并设置ListView高度的方法

01public void setListViewHeightBasedOnChildren(ListView listView) { 
02    ListAdapter listAdapter = listView.getAdapter();  
03    if (listAdapter == null) { 
04        return
05    
06 
07    int totalHeight = 0
08    for (int i = 0; i < listAdapter.getCount(); i++) { 
09        View listItem = listAdapter.getView(i, null, listView); 
10        listItem.measure(00); 
11        totalHeight += listItem.getMeasuredHeight(); 
12    
13 
14    ViewGroup.LayoutParams params = listView.getLayoutParams(); 
15    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
16    ((MarginLayoutParams)params).setMargins(10101010);
17    listView.setLayoutParams(params); 
18}

[代码] XML布局

01<ScrollView
02        android:layout_width="fill_parent"
03        android:layout_height="fill_parent"
04        android:fadingEdge = "none"
05        android:background="#FFF4F4F4"
06        xmlns:android="http://schemas.android.com/apk/res/android"
07        >
08   <LinearLayout
09    android:gravity="center_horizontal"
10    android:orientation="vertical"
11    android:background="#fff4f4f4"
12    android:layout_width="fill_parent"
13    android:layout_height="fill_parent"
14    >
15    <ListView
16        android:id="@+id/moreItemsListView"
17        android:layout_width="fill_parent"
18        android:layout_height="fill_parent"
19        android:cacheColorHint="#FFF4F4F4"
20        android:dividerHeight="0.0dip"
21        android:fadingEdge="none"
22        />
23   </LinearLayout>
24</ScrollView>

[图片] scrollview_listview.jpg

原创粉丝点击