Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
参考自:http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing/3495908#3495908
?
利用下面这个Utility 类的静态方法setListViewHeightBasedOnChildren()即可实现:
?
?
?
在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。public class Utility {public static void setListViewHeightBasedOnChildren(ListView listView) {//获取ListView对应的AdapterListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) {// pre-conditionreturn;}int totalHeight = 0;for (int i = 0, len = listAdapter.getCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0); //计算子项View 的宽高totalHeight += listItem.getMeasuredHeight(); //统计所有子项的总高度}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));//listView.getDividerHeight()获取子项间分隔符占用的高度//params.height最后得到整个ListView完整显示需要的高度listView.setLayoutParams(params);}}
?
其实原理就是动态的改变ListView控件的高度。
1 楼 androidHome 2011-10-19 兄台请问listView本身需要设置哪些属性?我也遇到和你同样的问题,引用上面这个工具类设置高度以后发现并没有起到什么效果,不知道是不是我代码里面还缺些什么设置,多谢多谢!