如何将ListView用作ScrollView的子项之一

时间:2013-11-29 15:32:05

标签: android android-layout listview android-listview

我已经阅读过一些不这样做的文献。但他们尚未提供替代解决方案。不过,这个问题似乎出现了很多。这是我的问题。

  • 我希望我的主要布局是可滚动的(这是因为它将拥有比适合屏幕更多的视图)。我的主要布局是垂直LinearLayout。所以现在我把它放在ScrollView中。

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

  • 你可以想象我的LinearLayout的其他孩子会说服你需要这个工作:例如,一个可以是一个可滚动的水平LinearLayout;另一个可能是ViewPater;等

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

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

澄清

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

注意

顺便说一下,我读过scrolling ListView within ScrollView。答案很好,但我仍有一些问题。

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

  • 如果LinearLayout的任何其他子视图都有一个点击侦听器,那么我就无法使用它们来滚动ScrollView。所以基本上对于大多数屏幕来说,滚动视图是不可滚动的。

1 个答案:

答案 0 :(得分:0)

您可以使用ListView作为主要布局(而不是ScrollView)并将视图置于列表addHeaderView() - 方法的顶部(分组在LinearLayout中或类似的东西)并使用addFooterView的{​​{1}}方法对列表下方的项目执行相同操作。

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