Android:查找 ListView 的项目呈现高度

Posted

技术标签:

【中文标题】Android:查找 ListView 的项目呈现高度【英文标题】:Android: Finding ListView's item rendered height 【发布时间】:2011-12-17 13:01:45 【问题描述】:

是否有任何方法可以找到当前显示在列表中的 ListView 项目的高度,而无需在布局 xml 文件中自行设置?

我试过了

View listItem = listAdapter.getView(currentIndex, null, listView);
listItem.measure(MeasureSpec.EXACTLY, MeasureSpec.UNSPECIFIED);
int itemHeight = listItem.getMeasuredHeight();

虽然它最初可以工作,但它决定在启动新的模拟器会话后在 measure() 调用期间抛出空指针异常。

我试图做的是在程序选择时将短列表中的一个项目(只有 2 或 3 个完整项目可见)居中。

【问题讨论】:

在您的问题中添加错误。我认为listAdapter.getView(currentIndex, null, listView) 返回 null。由于 listItem 为 null,当您调用 listItem.measure() 时,您会收到 NullPointerException。 您使用的是自定义适配器吗?也许最好从自定义适配器执行此测量,因为高度是在绘制视图后立即计算的。 【参考方案1】:

这对我有用:

public static int getItemViewHeight(Context context, Adapter adapter, int index) 
    FrameLayout fakeParent = new FrameLayout(context);
    View view = adapter.getView(index, null, fakeParent);
    view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    return view.getMeasuredHeight();

【讨论】:

以上是关于Android:查找 ListView 的项目呈现高度的主要内容,如果未能解决你的问题,请参考以下文章

android 自己定义ViewGroup实现可记载并呈现选择的ListView

ListView 在与交互之前不会呈现所有项目

SwiftUI - 可滚动的 ListView,对象未正确呈现

Android listView查找滚动的像素量

ListView 无法使用 Xamarin Forms 正确呈现

如何在 ScrollViewer (ListView) 中查找项目的位置?