指定列表条目数
应用场景
我们有事会遇到项目嵌套一个条目,控制条目高度以达到协调美观
XML 布局
<ListView
android:id="@+id/lv_autism_apply"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
Java代码(这里只要一个函数就可实现)
/**
* 获取并设置listview 的高度
* @param listView
* @param maxCount 设置最大可显示条目数量
*/
public void setListViewHeightBaseOnChildren(ListView listView, int maxCount) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
ViewGroup.LayoutParams params = listView.getLayoutParams();
if (listAdapter.getCount() > maxCount) {
for (int i = 0; i < maxCount; i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
params.height = totalHeight + (listView.getDividerHeight() * (maxCount - 1));
} else {
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
}
listView.setLayoutParams(params);
}
Java代码 填充数据时,调用该方法(设置最大数100,如果超过100则只会显示100条,少于100条如只有5条,则只显示5条)
setListViewHeightBaseOnChildren(lvAutismApply, 100);
网友评论