我想ListView
在渲染之前测量 a 中每个项目的高度。
我将此方法添加到我的自定义ListView
public void measureItemsHeight() {
mItemCount = getAdapter().getCount();
if(mItemOffsetY == null){
mItemOffsetY = new int[mItemCount];
}
for(int i = 0; i < mItemCount; ++i){
View view = getAdapter().getView(i, null, this);
view.measure(0, 0);
mItemHeight[i] = view.getMeasuredHeight();
}
}
然后,在我的活动中onCreate()
:
mListView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mListView.measureItemsHeight();
}
}
);
我得到的值与 报告的值不同getHeight()
,例如getMeasuredHeight()
返回 48,getHeight()
返回 72。
我用于项目的布局是simple_list_item
在我看来,这就像 hdpi 和 xhdpi 问题,有没有办法解决这个问题?我用来调试的设备是三星SGS2,也许这就是问题所在。