我想在渲染之前测量ListView
中每个项目的高度。
我将此方法添加到了自定义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问题,有没有办法解决?我用来调试的设备是Samsung SGS2,也许就是问题所在。
最佳答案
我建议您使用自定义列表,对列表行进行单独的布局。将以下属性分配给该视图布局:android:layout_height=wrap_content
。就是这样,祝你好运!