scrollview中套listView的问题,记录一下。

开发一个订单详情界面,详情界面上面要显示收货地址、订单总金额等,中间部分要一个listView,下面还有一些东西

但是一个界面显示不全,肯定要scrollview,然后发现listView竟然只显示第一个,查了一下问题大概就是android支持这么搞,反正解决办法网上是一大堆,没有仔细研究。但是这个办法走了一个捷径。反正能满足我的需求了。

大概布局就是 

<LinearLayout>

<ListView>
</ListView>


</LinearLayout>

然后在setAdapter后调用下面这个办法

大概就是统计item相加的高度,动态设置这个线性布局的高度。记录一下

public class Utility {

public static void setListViewHeightBasedOnChildren(ListView listView) {

//获取ListView对应的Adapter

ListAdapter listAdapter = listView.getAdapter(); 

if (listAdapter == null) {

// pre-condition

return;

}

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);

}

}

原文地址:https://www.cnblogs.com/Jerseyblog/p/4122728.html