来源:http://www.oschina.net/code/snippet_194968_7149
ScrollView与ListView共存会存在滚动的问题,并且ListView只显示一个半Item。 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item。 因此我们可以计算出这个ListView的总高度,再将它设置到ListView中,那么之前的滚动,高度问题也就不存在了。
代码] 获取并设置ListView高度的方法
01 | public void setListViewHeightBasedOnChildren(ListView listView) { |
02 | ListAdapter listAdapter = listView.getAdapter(); |
03 | if (listAdapter == null ) { |
08 | for ( int i = 0 ; i < listAdapter.getCount(); i++) { |
09 | View listItem = listAdapter.getView(i, null , listView); |
10 | listItem.measure( 0 , 0 ); |
11 | totalHeight += listItem.getMeasuredHeight(); |
14 | ViewGroup.LayoutParams params = listView.getLayoutParams(); |
15 | params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1 )); |
16 | ((MarginLayoutParams)params).setMargins( 10 , 10 , 10 , 10 ); |
17 | listView.setLayoutParams(params); |
[代码] XML布局
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" |
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" |
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" |
[图片] scrollview_listview.jpg