2017-09-12 34 views
0

我有列表視圖根據評論長度有不同高度的每行評論列表。我想以編程方式給列表視圖添加高度。我試圖讓每一行的高度,但每次我得到每行相同的高度......但根據他們的內容,每行有不同的大小。我已使用以下代碼:view.getMeasuredHeight()總是返回相同的高度android

ListAdapter listAdapter = listView.getAdapter(); 
    if (listAdapter != null) { 

     int numberOfItems = listAdapter.getCount(); 

     // Get total height of all items. 
     int totalItemsHeight = 0; 
     for (int itemPos = 0; itemPos < numberOfItems; itemPos++) { 
      View item = listAdapter.getView(itemPos, null, listView); 
      item.measure(0, View.MeasureSpec.UNSPECIFIED); 

      totalItemsHeight += item.getMeasuredHeight(); 
      Log.e("HEIGHT", "" + item.getMeasuredHeight()); 
     } 

     // Get total height of all item dividers. 
     int totalDividersHeight = listView.getDividerHeight() * 
       (numberOfItems - 1); 

     // Set list height. 
     ViewGroup.LayoutParams params = listView.getLayoutParams(); 
     params.height = totalItemsHeight + totalDividersHeight; 
     listView.setLayoutParams(params); 
     listView.requestLayout(); 


    } 
+0

你有一個XML格式的固定高度設爲您的列表項? –

+0

檢查你是否在xml中給出了固定的高度? –

回答

0

您必須等待它進行佈局和測量。

如果你想迫使它這樣做早點它包裝的內容,你可以這樣調用衡量一個項目:

item.measure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST), 
    MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST)); 

在致電getMeasuredHeight。請記住,這將返回不是dp的像素,因此您可能需要進行一些轉換。

0

嘗試使用ViewTreeObserver:

int mViewHeight =WindowManager.LayoutParams.WRAP_CONTENT; 

    callAddOnGlobalLayoutListner(item); 


    Method :: 
    public void callAddOnGlobalLayoutListener(final View v){ 
      view.getViewTreeObserver().addOnGlobalLayoutListener(
        new ViewTreeObserver.OnGlobalLayoutListener() { 

         @SuppressWarnings("deprecation") 
         @Override 
         public void onGlobalLayout() { 
          // TODO Auto-generated method stub 
          v.getViewTreeObserver() 
            .removeGlobalOnLayoutListener(this); 
          mViewHeight = view.getMeasuredHeight(); 
    Log.d("Height",mViewHeight+""); 

          } 

         } 
        }); 
     } 
相關問題