您的位置:首页 > 其它

关于滚动布局中的Listview的高度重新计算

2018-01-19 10:59 1876 查看
将计算高度的方法导入你的方法类里面。作为一个通用的方法。
注意该方法一定是在你的设置Adapter(**.setAdapter())之后。
如果你是更新了listview里面的数据,设置高度的方法就跟在notifyDataSetChanged()后面。(原因:导入新数据生成了新的item,高度改变)
/**
* 设置listview高度的方法
* @param listView
*/
public static void setListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView); //获得每个子item的视图
listItem.measure(0, 0); //先判断写入的widthMeasureSpec和heightMeasureSpec是否和当前的值相等,如果不等,重新调用onMeasure()
totalHeight += listItem.getMeasuredHeight(); //把每个item高度累加
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); //加上每个item之间的距离
listView.setLayoutParams(params);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐