【问题标题】:How to make the entire screen containting a (LinearLayout + ListView) scrollable如何使包含(LinearLayout + ListView)的整个屏幕可滚动
【发布时间】:2015-05-07 01:02:18
【问题描述】:

我有一个 Android 片段,其中包含一个 Vertical LinearLayout,其中包含两个布局:另一个内部 Vertical LinearLayout(占用至少一半的屏幕)和一个 ListView(显示许多较小的视图)。考虑它的一个好方法是类似于 facebook 帖子以及下面显示的几个 cmets。

我面临的问题是内部的 LinearLayout 是不可滚动的,因此 ListView 的一部分停留在屏幕之外,并且无法向上滚动屏幕以查看整个 ListView(内部布局可能需要整个屏幕)。将整个布局放在 ScrollView 中也是一种不好的做法。

我知道一个解决方案是让整个布局成为一个 ListView,第一个单元格成为内部 LinearLayout,然后是原始 ListView 中的单元格。然而,这也有其自身的问题:在 ListView 中回收视图更加困难,而且通常我也认为这是一种不好的做法,即一个单元格的行为与 ListView 中的所有其他单元格的行为不同。

有没有更好的解决方案?我可以想象这是一个典型的问题,我希望找到比上面更好的解决方案。

【问题讨论】:

  • 如果列表视图的某些部分不在屏幕上,则您的 xml 中有错误。或者您应该使用相对布局而不是线性布局,以确保不会发生这种情况。另外,如果您确实希望顶视图随列表一起滚动,正确的方法是使其成为列表标题,而不是使其成为列表中的单元格。

标签: android listview android-listview scrollview android-linearlayout


【解决方案1】:

这可能会对您有所帮助:

ListView yourListView = new ListView(this);
yourListView.addHeader(getHeaderView());

您还可以将页脚添加到 ListView。当你这样做时,页眉(或页脚)将成为 ListView 的一部分,因此它是可滚动的。你可以在这里找到文档:http://developer.android.com/reference/android/widget/ListView.html

【讨论】:

  • 谢谢。我知道页眉和页脚视图。当我在寻找解决方案时,我并没有想到它。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2021-01-26
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多