我想在渲染之前测量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问题,有没有办法解决这个问题?我用来调试的设备是三星SGS2,也许这就是问题所在。
答案 0 :(得分:2)
我建议您使用自定义列表,为列表行创建单独的布局。
将以下属性分配给该视图布局:android:layout_height=wrap_content
。这就是它。祝你好运!