2013-07-08 46 views
0

我有一個佈局,其中有一些標籤可以打開和關閉一些額外的信息。其中一個標籤顯示一個列表視圖。但不是顯示所有的元素,它只是一個一個顯示滾動功能。我只想顯示列表視圖中的所有項目。隱藏的列表視圖不顯示所有元素

屏幕的正常狀態:

http://i39.tinypic.com/2n1baq1.png

點擊標籤後:

http://i41.tinypic.com/2dvliqq.png

這是屏幕的關鍵XML:

 <TextView 
      android:id="@+id/tv_school" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/tv_basic" 
      android:layout_below="@+id/divider3a" 
      android:paddingBottom="10dip" 
      android:paddingTop="10dip" 
      android:text="School Info" 
      android:textColor="#5E5E60" 
      android:onClick="animationText" 
      android:clickable="true" /> 

     <ImageView 
      android:id="@+id/uparrow3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/divider3a" 
      android:layout_above="@+id/divider3b" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:layout_marginBottom="10dip" 
      android:src="@drawable/up" 
      android:visibility="invisible" /> 

     <ImageView 
      android:id="@+id/downarrow3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/divider3a" 
      android:layout_above="@+id/divider3b" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:layout_marginBottom="10dip" 
      android:src="@drawable/down" /> 

     <ImageView 
      android:id="@+id/divider3b" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_below="@+id/tv_school" 
      android:visibility="invisible" 
      android:background="@android:color/darker_gray"/> 

     <ListView 
      android:id="@+id/lv_schoolinfo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/divider3b" 
      android:layout_alignLeft="@+id/tv_basic" 
      android:paddingBottom="10dip" 
      android:paddingTop="10dip" 
      android:paddingRight="10dip" 
      android:scrollbars="none" 
      android:orientation="vertical" 
      android:visibility="invisible" /> 


     <ImageView 
      android:id="@+id/divider4" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_below="@+id/tv_school" 
      android:background="@android:color/darker_gray"/> 

這是適配器的代碼:

ListView list = (ListView) findViewById(R.id.lv_schoolinfo); 
ArrayList<Param> params = l.getSchools(); 
ArrayList<String> schools = new ArrayList<String>(); 
for(int i=0; i<params.size(); i++){ 
    schools.add(params.get(i).getName()); 
} 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, schools); 
list.setAdapter(adapter); 

回答

0

使用這個類公用事業

public class Utility 
{ 
    public static void setListViewHeightBasedOnChildren(ListView listView) 
     { 
      ListAdapter listAdapter = listView.getAdapter(); 
      if (listAdapter == null) 
       { 
        return; 
       } 
      int totalHeight = 0; 
      int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); 
      for (int i = 0; i < listAdapter.getCount(); i++) 
       { 
        View listItem = listAdapter.getView(i, null, listView); 
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
        totalHeight += listItem.getMeasuredHeight(); 
       } 
      ViewGroup.LayoutParams params = listView.getLayoutParams(); 
      params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1))+20; 
      listView.setLayoutParams(params); 
      listView.requestLayout(); 
     } 
} 

,並使用這個類裏面像這樣

list1.setAdapter(imageAdapteritem); 
Utility.setListViewHeightBasedOnChildren(list1); 

這將擴大您的清單總孩子的數量,你可以同時查看他們所有的人:)

+0

無論如何,這不是一個真正的解決方案,因爲高度依賴ds在列表中的項目數量,所以我不能使用修復值,在我看來。 – trumpetero

+0

其列表視圖的默認行爲它是不可能的,你可以一次看到所有的元素,因爲列表是用來保存滾動的多個數據 – farrukh

+0

問題是,包含標籤的佈局也是可滾動的。所以我對屏幕的同一區域有兩個滾動事件:一個用於標籤,另一個用於列表中的項目。這就是爲什麼我需要顯示所有列表項。 – trumpetero