首页 > 解决方案 > 如何在添加项目之前确定列表视图的高度

问题描述

我希望能够在添加项目之前确定列表视图的高度。列表视图定义为 layout_height=0dp 和 layout_weight=5(或其他值,它不是 fill_parent 或 wrap_content)。当我在添加项目之前调用 lv.getHeight 时,高度返回 0。我尝试在片段的 onResume 方法中使用 lv.requestLayout() 和 lv.getMeasuredHeight。

到目前为止我尝试过的事情:在 onGlobalLayout 处理程序中查询列表视图高度。这让我得到了正确的高度,但是已经调用了 listadapter 的 getView 来填充列表。如果我等到 onGlobalLayout 之后才绑定适配器,那么当我使用 adapter.notifyDataSetChanged() 更新视图时,我会陷入 onGlobalLayout 处理程序调用的循环中。

从文档中,onResume 似乎在布局完成后被调用,所以我希望 listview.getHeight 或 listview.getMeasuredHeight 此时会返回有效值,但我得到的只是 0。

为什么我想要这个。在添加它们之前,我需要知道列表视图中可以容纳多少项目。我想在列表顶部添加一个数字(count-1)的“空白项目”,以便用户可以将列表中的顶部项目滚动到底部,以便它在视觉上位于下面的另一个控件旁边名单。

标签: androidlistviewheight

解决方案


终于找到了这个。
View 的 getWidth() 和 getHeight() 返回 0 但它似乎与 onResume 的文档背道而驰


推荐阅读