我有一个ScrollView,它包含许多其他视图(TextViews、ImageViews等)。ScrollView比屏幕更高。我有一个AsyncTask,根据http响应更新ScrollView的子项。
我发现了一个有趣的行为,但不知道如何解决。如果我在AsyncTask.onPostExecute()中将任何子项的可见性设置为View.INVISIBLE,一切都正常。
然而,如果我将任何子项的可见性设置为View.GONE,则ScrollView在调用onPostExecute()时会跳到顶部。它跳的距离似乎有所不同。我猜重新布局ScrollView由于某种原因使其从顶部滚动。
因此问题是:是否有一种方法可以防止或解决这种行为?
PS. 使用ScrollView.jump(FOCUS_UP)作为解决方法并不理想,因为即使用户打算向下滚动,它也会强制将用户带到顶部。
编辑:实际上,我错了。问题不在于标记为gone的子视图,而是在于标记为gone的兄弟视图和ScrollView被重新调整大小。我的ScrollView位于一个LinearLayout内,该LinearLayout还包含一个按钮。当按钮设置为GONE时,ScrollView被调整大小以占用可用空间,导致它从顶部滚动。虽然原因不同,但仍在寻找解决方法。
我发现了一个有趣的行为,但不知道如何解决。如果我在AsyncTask.onPostExecute()中将任何子项的可见性设置为View.INVISIBLE,一切都正常。
然而,如果我将任何子项的可见性设置为View.GONE,则ScrollView在调用onPostExecute()时会跳到顶部。它跳的距离似乎有所不同。我猜重新布局ScrollView由于某种原因使其从顶部滚动。
因此问题是:是否有一种方法可以防止或解决这种行为?
PS. 使用ScrollView.jump(FOCUS_UP)作为解决方法并不理想,因为即使用户打算向下滚动,它也会强制将用户带到顶部。
编辑:实际上,我错了。问题不在于标记为gone的子视图,而是在于标记为gone的兄弟视图和ScrollView被重新调整大小。我的ScrollView位于一个LinearLayout内,该LinearLayout还包含一个按钮。当按钮设置为GONE时,ScrollView被调整大小以占用可用空间,导致它从顶部滚动。虽然原因不同,但仍在寻找解决方法。