Android ScrollView布局问题

11
我有几个ListViews在一个LinearLayout中。它按天列出事项,所以我有一个TextView包含"星期日:"后面是一系列的项目,然后是一个"星期一"的TextView等等。这很好用,但不适合屏幕。所以我添加了一个ScrollView作为LinearLayout的父级。现在它可以滚动,但是ListViews无论有0个还是3个条目,都有2个条目的空间。添加ScrollView父级导致ListViews不能动态调整大小。我尝试在列表适配器填充其视图后在ScrollView上调用requestLayout(),但没有任何效果。有什么想法吗?
编辑: 从http://www.anddev.org/viewtopic.php?p=25194和其他链接中看来,ScrollView内部的ListViews没有正确处理。有没有好的建议实现列表的列表?

你可以发布你的布局xml吗?在ListView中是否设置了android:layout_height="wrap_content"或类似属性? - svens
我目前无法访问布局。LinearLayout内的所有视图都具有layout_height="wrap_content",LinearLayout和ScrollView具有layout_height="fill_parent"(在LinearLayout上尝试了wrap_content)。注释掉ScrollView后,一切都正确布局,但超出屏幕范围。 - Aaron
把你的ListViews放进ListView中? :) 如果我理解正确,您想在TextView中列出所有工作日,并在其下面使用ListView。这应该可以通过自定义适配器来实现。请参阅我的问题https://dev59.com/EnI_5IYBdhLWcg3wJfkM的答案,其中描述了如何扩展ResourceCursorAdapter。也许这可以帮助您构建一个填充ListView的适配器,其中包括您的工作日ListViews+说明。 - svens
2个回答

15

我也对这个话题很感兴趣,所以我做了一些研究。首先:永远不要将ListView放在ScrollView中(就像你自己发现的那样)。不幸的是,谷歌这个问题并没有提供任何解决方案,所以我尝试了我在上面评论中的建议。

我实现了一个自定义ListAdapter,并将ListViews放入一个父ListView中。这并不起作用(会导致与ScrollView相同的问题)。在freenode的官方android-irc #android-dev中与大家交流后,他们告诉我将ListViews放入ListView中和将其放入ScrollView中一样糟糕,甚至更糟。不幸的是,他们也无法帮我解决这个问题。

似乎只有一种方法可以实现你想要做的事情;参见类似问题的答案Scrolling with Multiple ListViews for Android。这个思路是通过一个自定义适配器将所有的ListViews合并成一个,并在条目之间插入某种标头。这绝对是可行的,但可能需要一些特殊的努力。


1
为什么不应该将列表视图放在滚动视图中? - MalcomTucker

6
我知道现在回答这个问题有点晚了,但对于那些遇到类似问题的人来说,这可能仍然有用。我建议您使用可扩展的ListView。它将解决您所有的问题。您可以将主/父名称设置为周,当您展开它时,您会看到特定日期/周/其他条目的列表。而且,您不必担心滚动,因为Android已经处理好了 :) 如果您尝试了这个方法,请让我知道它是否适用于您的问题。请搜索Expandable ListView的示例。编辑:在此处检查示例-http://mylifewithandroid.blogspot.com/2008/05/expandable-lists.html

展开式列表视图确实是前进的方向。 - Axarydax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接