【问题标题】:How do I use ListView as one of the children of a ScrollView如何使用 ListView 作为 ScrollView 的子项之一
【发布时间】:2013-11-29 15:32:04
【问题描述】:

我读过很多文献说不要这样做。但他们还没有提供替代解决方案。不过,这个问题似乎出现了很多。这是我的问题。

  • 我希望我的主布局是可滚动的(这是因为它的视图数量超过了屏幕的大小)。我的主要布局是垂直线性布局。所以现在我把它放在一个 ScrollView 里面。

  • 我的 LinearLayout 的许多子项之一是 ListView(显示 3 个项目,用户滚动 ListView 以获取更多信息)。

  • 1234563另一个可能是 ViewPater;等等。

现在,如果我的 LinearLayout 的内容可以一次全部适应屏幕,我就没有问题了。但我的 LinearLayout 中有大约六个不同的子级,一次只能看到大约三个。所以,是的,我确实需要能够滚动我的 LinearLayout。

还有一件事。如果我滚动子 ListView 并到达终点,我需要父 LinearLayout 来恢复控制并在用户滚动时开始滚动。

澄清

需要澄清的是,我的 ListView 实际上是动态添加到 ViewPager 中的。所以从技术上讲,ViewPager 是我的 LinearLayout 的孩子。但是在 ViewPager 内部,其中一个页面是 ListView。

注意

顺便说一句,我读过scrolling ListView within ScrollView。那里的答案很好,但我仍然有一些问题。

  • 一旦到达 ListView 的边缘,控件就不会恢复为 ScrollView

  • 如果 LinearLayout 的任何其他子视图具有单击侦听器,则我无法使用它们来滚动 ScrollView。所以基本上对于大部分屏幕来说,滚动视图是不可滚动的。

【问题讨论】:

  • 对我来说似乎是一个有效的问题。所以我不确定为什么有人投了反对票。请提供 cmets 而不是简单的廉价投票。
  • 老实说,这听起来对用户来说是一场噩梦。在可滚动窗口内滚动是用户会觉得困难的事情,这就是应用程序通常不这样做的原因。而是考虑选择一个项目来打开另一个活动或片段或弹出窗口。想想当一个配置项可以打开一组其他选项时,通常如何安排配置活动。如果您查看碎片,那么您也可以满足更大的屏幕需求。
  • 其实不是。但我知道它听起来如何。我玩过设计师的模型,它看起来和工作都很好。
  • 此外,iOS 版本的应用程序已经创建(隐身模式)并且设计工作正常。

标签: android android-layout listview android-listview


【解决方案1】:

您可以使用ListView 作为主要布局(而不是ScrollView)并将视图放在列表顶部addHeaderView()-方法(分组在LinearLayout 或类似的东西中)并执行与列表下方的项目相同,使用ListViewaddFooterView-方法。

我没有测试它,但我认为它可能有效。

【讨论】:

  • 但是设计中使用的ListView是动态添加到一个ViewPager中的。明白这一点:布局其实没有ListView;它有一个包含 LinearLayout 的 ScrollView,而 LinearLayout 又包含许多子视图,其中没有一个是 ListView。但随后以编程方式,其中一个子视图 ViewPager 在其页面之一中采用 ListView。这就是问题开始的时候。因此,在您的设计中,除 ViewPager 之外的所有内容都将转到 HeaderView 或 FooterView。但是我看不到将单个 ViewPager 放置为 ListView 的项目可以获得什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多