2012-10-24 95 views
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.

The layo我使用的項目是simple_list_item

它在我看來這就像一個hdpi和xhdpi問題,有沒有辦法解決這個問題?我用來調試的設備是Samsung SGS2,可能是這個問題。

+0

你可以附加'simple_list_item.xml'嗎?另外,你可以給一些*上下文*,解釋你爲什麼要測量所有可能的孩子的身高? – Raffaele

+0

以及我需要得到我的項目的高度,使自己的ScrollY德獲得多少像素,我已經在列表視圖中滾動,因爲你不能跟蹤通常 –

回答

2

我建議你使用自定義列表,爲列表行做單獨的佈局。
將以下屬性分配給該視圖佈局:android:layout_height=wrap_content
就是這樣。
祝你好運!

+0

感謝它像一個魅力工作! –