Android重绘ListView高度

简介: Android重绘ListView高度 经常会有这样需求,需要ListView默认将所有的条目显示出来,这就需要外层使用ScrollView,ScrollView里面放置一个重绘高度的...

Android重绘ListView高度

经常会有这样需求,需要ListView默认将所有的条目显示出来,这就需要外层使用ScrollView,ScrollView里面放置一个重绘高度的ListView,类似下面这样

P

工具类

package ……;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

/**
 * Created by kongqw on 2015/11/25.
 */
public final class ListViewUtil {

    private ListViewUtil() {
    }

    public static void setListViewHeightBasedOnChildren(ListView listView) {
        try {
            // 获取ListView对应的Adapter
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null) {
                return;
            }

            int totalHeight = 0;
            for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
                // listAdapter.getCount()返回数据项的数目
                View listItem = listAdapter.getView(i, null, listView);
                // 计算子项View 的宽高
                listItem.measure(0, 0);
                // 统计所有子项的总高度
                totalHeight += listItem.getMeasuredHeight();
            }

            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            // listView.getDividerHeight()获取子项间分隔符占用的高度
            // params.height最后得到整个ListView完整显示需要的高度
            listView.setLayoutParams(params);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用

在ListView调用完setAdapter()后,调用工具类的方法,重绘ListView的高度,类似这样

……

mLvOutputs = (ListView) findViewById(R.id.lv_outputs);

……

TransactionOutputsAdapter transactionOutputsAdapter = new TransactionOutputsAdapter(this, transactionInfo.getData().getOut());
mLvOutputs.setAdapter(transactionOutputsAdapter);
// 重新计算Listview高度
ListViewUtil.setListViewHeightBasedOnChildren(mLvOutputs);
相关文章
|
Kubernetes 容器 Perl
k8s命名空间
k8s命名空间
452 0
|
NoSQL 安全 测试技术
Redis游戏积分排行榜项目中通义灵码的应用实战
Redis游戏积分排行榜项目中通义灵码的应用实战
354 4
|
人工智能 Kubernetes Cloud Native
跨越鸿沟:PAI-DSW 支持动态数据挂载新体验
本文讲述了如何在 PAI-DSW 中集成和利用 Fluid 框架,以及通过动态挂载技术实现 OSS 等存储介质上数据集的快速接入和管理。通过案例演示,进一步展示了动态挂载功能的实际应用效果和优势。
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
814 14
|
人工智能 安全 搜索推荐
|
存储 人工智能 安全
网络安全中的加密技术详解
【7月更文挑战第28天】加密技术作为网络安全的核心组成部分,对于保护数据安全、维护网络秩序具有重要意义。随着技术的不断进步和应用场景的不断拓展,加密技术将不断迎来新的挑战和机遇。未来,我们需要继续关注加密技术的发展动态,加强技术研发和应用创新,为构建更加安全、可信的网络环境贡献力量。同时,我们也需要加强相关法律法规的制定和执行力度,确保加密技术的合法合规使用,为数字经济的健康发展提供有力保障。
1047 1
|
区块链 C# Windows
以太坊开发入门,完整入门篇
一个适合区块链新手的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 一个用区块链、星际文件系统(IPFS)、Node.
3871 0
|
消息中间件 Java 大数据
Linux Ubuntu 18.04安装Kafka消息队列MQ中间件
Kafka是开源高并发百万级消息队列MQ中间件,在互联网、物联网IOT、大数据、电商、直播、游戏、导航领域广泛使用。 本文讲解最新的Kafka在Linux系统上的详细安装步骤。
3353 82
|
存储 缓存 分布式计算
阿里云服务器2核8G、4核32G、8核64G配置最新收费标准和活动价格参考
2核8G、4核32G、8核64G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择,目前用户购买2核16G配置活动价格最低为2439.24元/1年起,购买4核32G配置活动价格最低为4499.88元/1年起,购买8核64G配置活动价格最低为8621.16元/1年起,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
875 0
阿里云服务器2核8G、4核32G、8核64G配置最新收费标准和活动价格参考
|
Linux
Centos7.2命令安装图形化界面
Centos7.2命令安装图形化界面
534 0
Centos7.2命令安装图形化界面