Android 高度列表视图-所有行可见

Android 高度列表视图-所有行可见,android,listview,height,Android,Listview,Height,我对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="w

我对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(元素)

我的问题是,我的ListView总是显示第一个元素(一行),即使它有多个元素(2个或更多)。您可以在ListView中滚动,您会看到ListView包含所有元素,但在屏幕中ListView的高度降低,它只显示一行

我已经在ListView的高度中添加了“包装内容”,但我不知道为什么它没有足够的高度来显示所有元素

但是,如果我在ListView的高度中放置一个固定值(例如,200 dp),它将取该值,该值更高,并且我可以同时看到所有项目。为什么?

有人能帮我吗


谢谢。

尝试在运行时为每行添加高度。

如何?我希望ListView具有与wrap_内容相同的高度,即与元素相同的高度。首先,您必须通过获取行的每个行元素的高度,并将行高度乘以列表视图中的项目总数来计算列表视图的总高度。然后,您必须使用以下命令将此总高度设置为列表视图:listView.setLayoutParams(newLayoutParams(LayoutParams.MATCH_PARENT,totalHeight));或者,您可以使用linearlayout来代替listview,并通过使用addChild()方法扩大行视图来添加项!我已将“listView.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_PARENT,totalHeight));”而且很有效!!我必须使用ListView,因为我使用BaseAdapter来控制某些元素,因此LinearLayout被丢弃。然而,我不明白为什么包装内容不起作用。。。在我的应用程序中的其他列表视图中运行良好!也许,由于它在ScrollViewNow中,问题在于每行高度具有不同密度值的设备会发生变化=$用listview滚动查看,你不觉得它的UI设计很糟糕吗?其次,把你的整个代码放在容易理解的地方。