5

我有一个包含许多其他视图(TextViews、ImageViews 等)的 ScrollView。ScrollView 比屏幕高。我有一个 AsyncTask 根据 http 响应更新 ScrollView 的子项。

我发现了一个有趣的行为,我不知道如何解决。如果我将任何孩子的可见性设置为 View.INVISIBLE 作为 AsyncTask.onPostExecute() 的一部分,则一切正常。

但是,如果我将任何孩子的可见性设置为 View.GONE,则在调用 onPostExecute() 时,ScrollView 会从顶部跳下。究竟有多远似乎有所不同。我猜重新布置 ScrollView 会导致它出于某种原因从顶部滚动。

所以问题是:有没有办法防止或解决这种行为?

PS。使用 ScrollView.jump(FOCUS_UP) 作为解决方法并不理想,因为即使用户打算向下滚动,这也会迫使用户到达顶部。

编辑:实际上,我错了。问题不在于子视图被标记为消失,问题在于兄弟视图被标记为消失并且 ScrollView 被调整大小。我的 ScrollView 在一个 LinearLayout 中,它还包含一个 Button。当按钮设置为 GONE 时,ScrollView 会调整大小以占用可用空间,使其从顶部滚动。不同的原因,如果可能的话,仍在寻找解决方法。

4

1 回答 1

6

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

android:descendantFocusability="blocksDescendants"

例子:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >
于 2017-01-30T08:02:04.950 回答