Расширяемый ListView для Android автоматически прокручивается вниз, когда я нажимаю на группу

#android #scroll #expandablelistview

#Android #прокрутка #расширяемый listview

Вопрос:

У меня есть расширяемый ListView, который заполнен элементами. Когда вы нажимаете на элемент на верхнем уровне, он открывает следующий уровень, который показывает список, содержащий некоторую дополнительную информацию о каждом элементе. Для некоторых верхних элементов (групп), когда я нажимаю на них, он открывает нижние элементы (дочерние элементы) и больше ничего не делает. Но для других групп, когда я нажимаю на них, он открывает дочерние элементы и прокручивает меня вплоть до последнего дочернего элемента этой группы. Кто-нибудь знает, почему он делает это для некоторых элементов, а не для других? И есть ли какой-либо способ избавиться от этого эффекта и просто оставить список прокрученным до той же позиции, в которой он уже находится?

Редактировать: я только что понял, что он выполняет эту прокрутку только для нижней половины элементов верхнего уровня. То есть на верхнем уровне есть 14 элементов, для элементов 8-14, когда вы нажимаете на них, он прокручивается вниз, так что последний дочерний элемент находится в нижней части экрана. Если вы нажмете на элементы 1-7, дочерние элементы откроются, и больше ничего не произойдет.

Edit2: @coldForged насколько я знаю, я использую стандартный расширяемый ListView, вот xml из моего макета:

 <ExpandableListView
android:id="@ id/listView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:background="@drawable/paper"
android:scrollingCache="false"

android:scrollbars="none"
>
</ExpandableListView>
  

Может ли атрибут scrollingCache = «false» быть причиной этого? Мне пришлось установить этот атрибут, чтобы он отображал фоновое изображение даже во время прокрутки списка. Без этого атрибута фон списка становится черным во время его прокрутки.

Комментарии:

1. В ExpandableListView нет ничего врожденного, что могло бы вызвать такое поведение, поэтому нам понадобится более подробная информация, чтобы помочь вам.

Ответ №1:

Я столкнулся с той же проблемой и нашел действительно простое решение здесь: [Android расширяемый ListView Прокрутите до позиции расширенной группы]

Редактировать: Поскольку ссылка исчезает раз в месяц, вот действительно простое решение: просто установите android:transcriptMode="disabled" . Это предотвращает прокрутку до последней позиции списка.

Для дальнейшего чтения: [Режим расшифровки в документах Android] [1] [1]: https://developer.android.com/reference/android/widget/AbsListView#attr_android:transcriptMode

Комментарии:

1. Снова мертв. Не могли бы вы объяснить решение непосредственно в ответе? Ссылки, как правило, не настолько надежны.

Ответ №2:

Это стандартное поведение ExpandableListView. Он пытается показать все элементы группы, которые пользователь только что расширил. В вашем случае расширение групп 1-7 не скрывает дочерних элементов, но для других групп это так, поэтому список прокручивается.