【发布时间】:2011-03-04 04:38:37
【问题描述】:
我有一个 ScrollView,其中包含许多其他视图(TextViews、ImageViews 等)。 ScrollView 比屏幕高。我有一个基于 http 响应更新 ScrollView 子级的 AsyncTask。
我发现了一个有趣的行为,我不知道如何解决。如果我将任何孩子的可见性设置为 View.INVISIBLE 作为 AsyncTask.onPostExecute() 的一部分,则一切正常。
但是,如果我将任何子项的可见性设置为 View.GONE,则调用 onPostExecute() 时 ScrollView 会从顶部跳下。究竟有多远似乎有所不同。我猜重新布置 ScrollView 会导致它出于某种原因从顶部滚动。
所以问题是:有没有办法防止或解决这种行为?
附言。使用 ScrollView.jump(FOCUS_UP) 作为解决方法并不理想,因为即使用户打算向下滚动,这也会迫使用户到达顶部。
编辑:实际上,我错了。问题不在于子视图被标记为消失,问题在于兄弟视图被标记为消失并且 ScrollView 被调整大小。我的 ScrollView 位于一个 LinearLayout 中,它还包含一个 Button。当按钮设置为 GONE 时,ScrollView 会调整大小以占用可用空间,使其从顶部滚动。不同的原因,如果可能的话,仍在寻找解决方法。
【问题讨论】:
-
如果 View.INVISIBLE 有效,为什么要将其更改为 View.GONE?我的猜测是 GONE 实际上是在折叠视图,触发您的 ScrollView 的完全重绘,而 INVISIBLE 只是隐藏了它,但我不能肯定地说
-
View.GONE 对于这些视图更可取,因为当视图不可见时我不想要空白。干杯,迈克
-
@emmby 你能找到解决这个问题的方法吗?我也面临着类似的问题。
-
@RiteshKadmawala 很遗憾没有:(
标签: android scrollview