2015-03-19 30 views
1

我對ListView中的高度有疑問。這是我的情況:高度列表視圖 - 所有行可見

我有一個佈局下一個結構:

<ScrollView 
... 
android:layout_width="fill_parent" 
android:layout_height="0dp" 
android:layouit_weight="0.8" > 

    <TableLayout 
    ... 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:stretchColumns="0" > 

     <TableRow> 
     <TextView ... /> 
     </TableRow> 
     <TableRow> 
     <ListView 
     ... 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" ... /> 
     </TableRow> 

     <TableRow> ... 

    </TableLayout> 
</ScrollView> 

每個的TableRow有一個TextView(標題)和一個ListView(元素)。

我的問題是,即使它有多個元素(2或更多),我的ListView總是顯示第一個元素(一行)。您可以在ListView中進行滾動,並且您可以看到ListView具有所有元素,但在屏幕中,ListView的高度降低了,它只顯示一行。

我已經把'wrap_content'在ListView的高度,但我不知道它爲什麼沒有足夠的高度來顯示所有元素。但是,如果我在ListView的高度(例如200 dp)中放置一個固定值,它將取得該值,並且可以同時看到所有項目。爲什麼?

任何人都可以幫助我嗎?

謝謝。

+0

帶有listview的滾動視圖,你不覺得它是一個糟糕的UI設計?其次,放置你的整個代碼比你的話容易理解。 – Fasiha 2015-03-19 11:14:10

回答

1

嘗試在運行時爲每行添加高度。

+0

如何?我希望ListView具有wrap_content的高度,也就是說,它的高度與元素的高度相同。 – KryNaC 2015-03-19 10:46:32

+1

首先,您必須通過獲取行的每個行元素的高度並將行高與列表視圖中的項目總數相乘來查找列表視圖的總高度。然後你必須設置這個總高度來使用列表視圖: listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,totalHeight)); 或 而不是使用listview,您可以使用linearlayout並通過使用addChild()方法膨脹行視圖來添加項目。 – 2015-03-19 11:00:29

+0

好回覆@Arun Kumar!我已經把'listView.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_PARENT,totalHeight));'它的工作原理!我必須使用ListView,因爲我使用BaseAdapter來控制某些元素,因此將放棄LinearLayout。但是,我不明白爲什麼wrap_content不起作用...在我的應用程序中的其他ListViews運作良好!也許,由於它在ScrollView – KryNaC 2015-03-19 11:38:00