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
SwiftUI - 可滚动的 ListView,对象未正确呈现