【问题标题】:Height List View - All rows visible高度列表视图 - 所有行可见
【发布时间】:2015-05-22 09:19:49
【问题描述】:

我对 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 的高度降低了,它只显示一行。

我已经把'wrap_content'放在ListView的高度,但我不知道为什么它没有足够的高度来显示所有元素。

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

谁能帮帮我?

谢谢。

【问题讨论】:

  • 用listview滚动视图,你不觉得它的UI设计很差吗?其次,放置你的整个代码比它容易理解你的话。

标签: android listview height


【解决方案1】:

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

【讨论】:

  • 怎么样?我希望 ListView 的高度为 wrap_content,即与它所具有的元素一样高。
  • 首先,您必须通过获取行的每个行元素的高度并将行高乘以列表视图中的项目总数来找到列表视图的总高度。然后你必须设置这个总高度来列表视图使用: listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, totalHeight));或者不使用列表视图,您可以使用线性布局并通过使用 addChild() 方法膨胀行视图来添加项目。
  • 很好的回应@Arun Kumar!我放了'listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, totalHeight));'它有效!我必须使用 ListView,因为我使用 BaseAdapter 来控制某些元素,因此 LinearLayout 被丢弃。但是,我不明白为什么 wrap_content 不起作用......在我的应用程序的其他 ListViews 中运行良好!也许,因为它在 ScrollView 中
  • 现在,问题是每行高度的密度值不同的设备会发生变化... =$
猜你喜欢
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 2013-04-17
  • 2012-09-12
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多