一 问题描述
在布局中有时候需要ScrollView嵌套ListView,但发现listview只显示了一行数据,其他的需要滑动。
二 解决方案
1.把listView在布局文件中设置一个固定的高度,这样能显示多个item,但是有kennel还是显示不全(如果已知item高度和固定个数 可以用这种方式设置高度 item高*个数)。
2.因为item未知个数 需要listview设置数据后,动态计算list view的高度,并设置。以下为设置的代码。(复制以下代码,设置数据后调用该方法)
/**
* 动态设置ListView的高度
* @param listView
*/
public static void setListViewHeightBasedOnChildren(ListView listView) {
if(listView ==null)return;
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter ==null) {
// pre-condition
return;
}
int totalHeight =0;
for (int i =0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -1));
listView.setLayoutParams(params);
}
网友评论