Android:如何测量ListView的总高度[重复]

2024-01-07

我需要测量 ListView 的总高度,但似乎我不断得到错误的值。我正在使用这段代码:

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }

    int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
            MeasureSpec.AT_MOST);
    Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += listItem.getMeasuredHeight();
        Log.w("HEIGHT"+i, String.valueOf(totalHeight));
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}

问题是我收到的高度超出了我应有的高度。每个列表项的测量方式都不同,并且所有项目都具有相同的高度,因此绝对不应该这样做。每个元素的高度至少是其实际高度的两倍。

先感谢您。

edit1:

我有两个 ListView,它们都有带有 6-7 个 EditText 字段的项目。如果用户想在 EditText 中写入/删除值,我会显示/隐藏 ListView。一切正常,除了当我想显示列表时,它需要大量空间,因为计算 ListView 的方法需要大量空间。因此,ListView 下面有很多空白空间。所需的空间是原来的三倍。


我终于做到了!这是测量 ListView 高度并将 ListView 设置为完整大小的工作代码:

public static void getTotalHeightofListView(ListView listView) {

    ListAdapter mAdapter = listView.getAdapter();

    int totalHeight = 0;

    for (int i = 0; i < mAdapter.getCount(); i++) {
        View mView = mAdapter.getView(i, null, listView);

        mView.measure(
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),

                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

        totalHeight += mView.getMeasuredHeight();
        Log.w("HEIGHT" + i, String.valueOf(totalHeight));

    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (mAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:如何测量ListView的总高度[重复] 的相关文章

  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • startActivity overridePendingTransition 只显示进入动画

    基本上 我遇到的问题是只显示输入幻灯片动画 调用 Activity 不会产生动画 startActivity intent overridePendingTransition R anim right in partly R anim le
  • 如何使用retrofit2进行GET请求?

    我有一个在本地主机上运行的安静的 Web 服务 我想在该剩余 URL 上发出 Retrofit2 GET 请求 MainActivity java private void requestData public static final S
  • 添加动态数据时 footable 出现问题

    我需要 jQuery Mobile 方面的一些帮助富表 http css tricks com footable a jquery plugin for responsive data tables 我正在表中动态添加数据 HTML tab
  • 在代码中旋转按钮(或其中的文本)

    我必须通过编码随机旋转按钮 或里面的文本 它是相同的 API级别低于11是否有button setRotate x 好吧 看了一下 答案是 很复杂 您可以使用旧的动画框架旋转按钮 例如像这样 Button button Button fin
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • Android 谷歌地图 V2 已停止

    我正在尝试构建地图应用程序并关注这个链接 https blog emildesign rhcloud com p 435一步步 我在这里找到了类似的主题 但对我没有帮助 我想显示地图 但是当我运行它时 它返回强制关闭和我的 Android
  • 在 Android 中始终以横向模式打开相机

    在我的 Android 应用程序中 单击按钮后我希望相机以横向模式打开 即使我将手机旋转为纵向模式 相机也应始终处于横向模式或纵向模式 使用此代码在横向模式下打开相机 Intent cameraIntent new Intent Media
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • 如何在Android网格视图中设置单元格大小?

    我正在尝试为应用程序制作一个带有大图标的网格视图 但我找不到任何有关修改 Android 上网格布局上的单元格大小的教程 有人可以给我一个例子或相关链接吗 Thanks 就像另一个一样适配器视图 http developer android
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 有没有办法在多个嵌套的 RecyclerView 之间共享同一个 LayoutManager

    我正在开发一个显示游戏列表的应用程序 在每个游戏的 itemView 内 我还有一个要显示的视频列表 预览和结构如下 我部署了一个RecyclerView作为窗口根视图 然后对于视频 我使用网格样式的RecyclerView来显示 所以这里
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • BitmapFactory.decodeResource() 忽略 jpg 图像的 inPreferredConfig 选项

    我尝试将jpeg资源图像加载到ARGB 8888格式的位图 BitmapFactory Options opts new BitmapFactory Options opts inPreferredConfig Bitmap Config
  • 如何在 kotlin 中检查 lambda 空值

    在 Kotlin 中如何检查 lambda 是否为空 例如 我有这样的签名 onError Throwable gt Unit 我如何区分它的默认值是应用于主体还是应用于此函数的值 您无法测试 lambda 的主体是否为空 因此它不包含源代
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • Application.onLowMemory() 未调用

    我创建了自己的应用程序类 我尝试调试它 代码在 Application onCreate 处停止 但不会在 onLowMemory 处停止 为了测试该场景 我打开了许多其他高内存应用程序 我看到的是调试会话终止 在 Eclipse 中 并且
  • 在android中使用BaseActivity的不同活动中的通用标头

    我想编写一次代码并在不同的活动中使用 我创建了一个Base Activity class为了那个原因 此外 不同活动中所有布局的标题都是相同的 我在以下人员的帮助下做到了这一点

随机推荐

  • 将 [(key: String, value: String)] 转换为 [String:String]

    我想将 key String value String 转换为 String String 可以吗 如果是的话我怎么做 谢谢 var KeyValuePair key String value String key 2017 01 04 v
  • 检查输入时出错:预期dense_input的形状为(21,),但得到的数组的形状为(1,)

    如何修复输入数组以满足输入形状 我尝试转置输入数组 如上所述here https stackoverflow com questions 50336110 valueerror error when checking expected de
  • ACE oleDb 驱动程序无法处理巨大的 Excel 文件

    ACE OLEDB 驱动程序对于较大的文件是否存在任何已知问题 我使用下面的代码来检索 400Mb xls 文件中的工作表 public string GetWorkSheets var connectionString Provider
  • C# 中 (int) 和 Convert.toint32 之间的区别

    当我将对象转换为 int 时 int object 然后当对象值为 0 时 他会给我错误 指出特定的强制转换无效 当我将对象转换为 int 时 convert toint32 object 然后他工作并给我 0 意味着演员阵容有效 我想知道
  • 如何在 C++ 中逐行读取文件中的整数组

    我有一个文本文件 每一行都有一个或多个整数 用空格分隔 我怎样才能用 C 优雅地阅读这个内容 如果我不关心行 我可以使用 cin gt gt 但整数在哪一行很重要 输入示例 1213 153 15 155 84 866 89 48 12 1
  • WP REST API 自定义 POST 端点不工作,404 错误

    我正在编写一个插件 但我在使用自定义端点时遇到了一些问题 该端点从应用程序前端 Angular 接收数据 并将向其传递另一个函数来过滤一些数据 我对产品数据库的 GET 请求工作得很好 但 POST 只返回 404 错误 如果我在 Inso
  • 使用淡入淡出动画重绘 UIView?

    In TwUI 有一个方法叫做redraw on TUIView 它强制视图重绘 但它还带有视图的新旧状态之间的自由淡入淡出动画 我想知道在正常情况下是否可能发生类似的事情UIView 基本上 我如何重绘视图 setNeedsDisplay
  • STM32的HAL中实现单按、长按和双按功能

    我正在尝试实现单击 双击和长按功能来执行不同的功能 到目前为止 我已经理解了单击和长按的逻辑 但我不知道如何检测双击 至于代码 我使用计数器实现了单击和长按 但代码仅停留在第一个 if 条件上 bool single press false
  • 渲染画布时单词重叠

    我有一个很长的文本要渲染到画布上 并且单词在 Safari 中重叠且混乱 但在 Chrome 中完美运行 我正在使用最新版本的 html2canvas 库 v1 0 0 rc 3 这是 safari 中的输出 https i stack i
  • 错误消息:看起来您缺少一些运行 Electron 所需的依赖项

    全局安装 electro forge 后npm install g electron forge我在与 electro forge 相关的终端中输入的任何命令都会显示以下消息 它似乎缺少运行 Electron 所需的一些依赖项 确保您安装了
  • 根据国家地理 IP 将观众重定向到其他网站

    假设我有一个网站 www abc com featured abc 并且想将除马来西亚以外其他国家 地区的观众重定向 仅该链接 到 YouTube 视频 但 www abc com 仍然是全球性的 是的 我的服务器已经使用 geoip 模块
  • 使用httpwebrequest从网站获取图像到byte[]

    我想读取网站上 PNG 文件的原始二进制文件并将其存储到 byte 中 到目前为止我有这样的内容 Uri imageUri new Uri http www example com image png Create a HttpWebreq
  • 使用 java processbuilder 运行 bat 文件

    我正在尝试使用 java 进程生成器执行 bat 文件 但它不会启动该进程 请告诉我我在这里做错了什么 当我用 file sh 替换 file bat 时 这段代码在 Linux 环境下工作得很好 final ArrayList
  • Python 随机列表理解

    我有一个类似于以下内容的列表 1 2 1 4 5 2 3 2 4 5 3 1 4 2 我想从此列表中创建 x 个随机元素的列表 其中所选元素都不相同 困难的部分是我想通过使用列表理解来做到这一点 如果 x 3 可能的结果是 1 2 3 2
  • Rails 模型回调(创建/更新后)attribute_was 不起作用

    我正在将 Rails 5 1 应用程序迁移到 Rails 5 2 1 在我的模型中 我在创建或更新模型后使用回调来创建活动日志 很遗憾todo name and todo name was始终相同 当前值 这适用于每个属性和每个模型 还ch
  • 如何为 JMenu 子菜单设置加速器?

    我有一个用户请求将加速器添加到子菜单 JMenu 这将允许用户按下快捷键并使相应的子菜单 折叠 显示其包含的菜单项 我不记得每个人都见过这样的东西 无论是在 Java 还是任何其他语言中 我们的应用程序是使用 Swing 用 Ja va 编
  • 了解 TypeError:获得关键字参数的多个值

    我尝试了不同的方法来使用 args 调用该方法 下面是我的代码片段 def total name args if args print s has total money of Rs d name sum args else print s
  • 如何使用 Linq 的聚合函数 C# 添加到列表

    我有一个类型的对象集合 我想将其转换为不同类型 这可以使用 foreach 轻松完成 但我想弄清楚如何使用 Linq 的聚合函数来完成此操作 问题是所有聚合示例都使用行字符串或 int 类型 它们支持 运算符 我希望累加器类型是一个列表 它
  • 如何从 Java 向 sudo 提供 root 密码?

    我正在尝试编写一个小型 Java 应用程序来覆盖我的 etc resolv conf文件 我使用的是 Ubuntu 12 04 为此 我需要提供我的root密码 myUser myMachine sudo vim etc resolv co
  • Android:如何测量ListView的总高度[重复]

    这个问题在这里已经有答案了 我需要测量 ListView 的总高度 但似乎我不断得到错误的值 我正在使用这段代码 public static void setListViewHeightBasedOnChildren ListView li