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の問題のように見えますが、これを修正する方法はありますか?私がデバッグに使用するデバイスはSamsungSGS2ですが、おそらくそれが問題です。