【问题标题】:Android ScrollView jumps around when resized调整大小时,Android ScrollView 会跳来跳去
【发布时间】: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


【解决方案1】:

我遇到了同样的问题。如果布局跳跃,请在您的顶部杠杆布局中添加以下内容

android:descendantFocusability="blocksDescendants"

例子:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >

【讨论】:

  • 我知道我们不是要 +1,但谢谢!这一直困扰着我多年!
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
相关资源
最近更新 更多