#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 не скрывает дочерних элементов, но для других групп это так, поэтому список прокручивается.