2012-10-24 5 views
0

렌더링 전에 각 항목의 높이를 ListView에 측정하고 싶습니다. (48)을 반환 getMeasuredHeight() 예를 들어 내가 getHeight()에 의해보고 된 것보다 다른 얻을목록보기 항목의 높이 측정

mListView.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      mListView.measureItemsHeight(); 
     } 
    } 
); 

값 :

나는 나의 활동의 onCreate() 내부 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(); 
    } 
} 

그런 다음 내 사용자 지정에이 방법을 추가 getHeight()은 72를 반환합니다.

layo 내가 항목에 사용하는 것입니다 simple_list_item

그것은 나에게 hdpi 및 xhdpi 문제처럼 보입니다,이 문제를 해결할 수있는 방법이 있습니까? 내가 디버깅하는 데 사용하는 장치는 Samsung SGS2입니다. 아마도 그게 문제입니다.

+0

'simple_list_item.xml'을 첨부 할 수 있습니까? 또한, 가능한 모든 어린이들의 신장을 측정하려는 이유를 설명하는 몇 가지 * 상황 *을 제시 할 수 있습니까? – Raffaele

+0

글쎄, 내 아이템의 높이를 얻어서 ScrollY te를 만들 필요가 있었는데, 정상적으로 추적 할 수 없기 때문에 얼마나 많은 픽셀을리스트 뷰에서 스크롤했는지 알 수있다. –

답변

2

사용자 지정 목록, 목록 행에 대해 별도 레이아웃 만들기를 사용하는 것이 좋습니다.
보기 레이아웃에 다음 특성을 지정하십시오 : android:layout_height=wrap_content.
그게 전부 야.
행운을 비네!

+0

덕분에 매력처럼 작동했다 !!! –

관련 문제