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

本文介绍了一种设置Android ListView高度的方法,确保在数据更新后ListView能够自动调整高度以适应新增加的内容,避免滚动条出现不必要的空白区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将计算高度的方法导入你的方法类里面。作为一个通用的方法。

注意该方法一定是在你的设置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);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值