Android ScrollView прыгает вокруг при изменении размера - PullRequest
4 голосов
/ 16 июня 2010

У меня есть ScrollView, который содержит ряд других представлений (TextViews, ImageViews и т. Д.).ScrollView выше экрана.У меня есть AsyncTask, который обновляет дочерние элементы ScrollView на основе ответа http.

Я обнаружил интересное поведение, которое я не могу понять, как обойти.Если я устанавливаю какой-либо видимость детей для View.INVISIBLE как часть AsyncTask.onPostExecute (), все работает нормально.

Однако, если я устанавливаю видимость детей для View.GONE, ScrollView переходитвниз сверху вниз при вызове onPostExecute ().Точно, как далеко, кажется, меняется.Я предполагаю, что перекомпоновка ScrollView заставляет его по какой-то причине прокручиваться от вершины.

Итак, вопрос: есть ли способ предотвратить или обойти это поведение?

PS.Использование ScrollView.jump (FOCUS_UP) в качестве обходного пути не является идеальным, поскольку это вынудит пользователя подняться наверх, даже если он намеревался прокрутить вниз.

РЕДАКТИРОВАТЬ : На самом деле, ябыл неправ.Проблема была не в том, что дочернее представление помечено как исчезнувшее, проблема была в том, что родственное представление помечено как исчезшее, а ScrollView изменилось.Мой ScrollView находится внутри LinearLayout, который также содержит кнопку.Когда кнопка установлена ​​в GONE, ScrollView изменяется, чтобы занять доступное пространство, заставляя его прокручиваться от вершины.Другая причина, все еще ищем обходной путь, хотя, если возможно.

1 Ответ

4 голосов
/ 30 января 2017

У меня была такая же проблема.Если прыгает макет, добавьте следующее в макет верхнего рычага

android:descendantFocusability="blocksDescendants"

Пример:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...