【发布时间】: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。 -
您使用的是自定义适配器吗?也许最好从自定义适配器执行此测量,因为高度是在绘制视图后立即计算的。