0

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ですが、おそらくそれが問題です。

4

1 に答える 1

2

カスタムリストを使用することをお勧めします。リスト行に個別のレイアウトを作成します。
そのビューレイアウトに次のプロパティを割り当てますandroid:layout_height=wrap_content
それでおしまい。
幸運を!

于 2012-10-24T12:42:37.610 に答える