调整大小时Android ScrollView跳来跳去

emm*_*mby 5 android scrollview

我有一个ScrollView,其中包含许多其他视图(TextView,ImageView等)。ScrollView比屏幕高。我有一个AsyncTask,它基于http响应更新ScrollView的子级。

我发现了一种有趣的行为,无法解决。如果我将任何儿童的可见性设置为AsyncTask.onPostExecute()的一部分,设置为View.INVISIBLE,则一切正常。

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

所以问题是:是否有办法预防或解决此问题?

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

编辑:实际上,我错了。问题不在于子视图被标记为不可用,而是同级视图被标记为不可见并且ScrollView调整了大小。我的ScrollView在LinearLayout内,其中还包含一个Button。当按钮设置为GONE时,将调整ScrollView的大小以占据可用空间,从而使其从顶部滚动开。原因不同,即使可能,仍在寻找解决方法。

Raj*_*med 5

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

android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)

例:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >
Run Code Online (Sandbox Code Playgroud)