2012-03-21 22 views
1

在我的應用程序中,我有一個列表視圖,我正在將Web視圖充氣到列表視圖中。我能夠將數據和圖像加載到列表視圖項目中。問題是由於內容不同,列表項目的高度不一樣。我想使所有列表項具有相同的高度如何在運行時計算listview項目高度並在android中設置所有具有相同高度的項目?

如何計算具有最大數據的列表項的高度,並將該高度設置爲列表中列表項的其餘部分。

我該怎麼做..我對此沒有任何線索..說,如果第10項具有最大高度,我想將其他高度應用於此。幫我實現這個請和謝謝您的支持

<?xml version="1.0" encoding="utf-8"?> 

<WebView 
    android:id="@+id/wv1" 
    android:layout_width="fill_parent" android:paddingRight="20dp" 
    android:layout_height="wrap_content" /> 

+0

您可以發佈膨脹的XML,在這裏,讓一些人可以幫助你,謝謝 – Triode 2012-03-21 15:25:52

回答

0

有標誌的數組,說

boolean[] flags=new boolean[szieOfList]; 

填充這個數組爲false;

具有可變最大高度爲您的活動或適配器,說最大,在onCreate方法與0初始化它,現在在getView方法,你在哪裏充氣XML,編寫如下代碼:

LayoutInflater layoutInflater = (LayoutInflater) getActivity() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view= (WebView) layoutInflater 
      .inflate(R.layout.web_view, null); 
if(flag[position]) 
{ 
     LayoutParams params = view.getLayoutParams(); 
       params.height = max; 
       view.setLayoutParams(params); 
}  
ViewTreeObserver observer = view.getViewTreeObserver(); 
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     //in here, place the code that requires you to know the dimensions. 

     flag[position]=true; 
     int height= view.getHeight(); 
     if(max<height) 
     { 
       max=height; 
       notifyDataSetInvalidated(); 
     } 
      else 
     { 
       LayoutParams params = view.getLayoutParams(); 
       params.height = max; 
       view.setLayoutParams(params); 
     } 
     //this will be called as the layout is finished, prior to displaying. 
    } 
} 
+0

這行爲什麼布爾[]標誌=新布爾[szieOfList];這裏列表的大小將爲空? – cavallo 2012-03-22 13:37:30

+0

它的列表大小,你從中加載listView中的數據,在你的情況下,它是數組長度。 – jeet 2012-03-23 04:16:56

相關問題