Переключить автопрокрутку ListView - при интерактивной прокрутке пользователем

У меня есть настоящее приложение, которое вы можете видеть слева на скриншоте ниже.

И я подготовил на GitHub очень простое тестовое приложение, которое вы можно увидеть справа:

скриншот

Настоящее приложение имеет внизу ListView, заполненный Сообщения журнала, связанные с Bluetooth. Это происходит довольно часто, несколько раз в секунду, и пользователь не может прокрутить вверх и посмотреть конкретное событие - потому что список сам перескакивает вниз, когда в него добавляются новые события. список.

Мой вопрос: Как отключить автоматическую прокрутку ListView, когда пользователь прокручивает вверх, и как снова включить автоматическую прокрутку, когда пользователь прокручивает вниз?

А вот мое очень простое тестовое приложение:

Как вы можете видеть, автопрокрутка в настоящее время включена атрибутами XML в макете:

<ListView 
    android:id="@+id/myListView"
    android:stackFromBottom="true"
    android:transcriptMode="alwaysScroll"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

person Alexander Farber    schedule 09.02.2015    source источник


Ответы (1)


Хорошо, я нашел идеальное решение для моей проблемы:

<ListView 
    android:id="@+id/myListView"
    android:stackFromBottom="true"
    android:transcriptMode="normal"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Если для параметра transcriptMode задано значение нормальный , затем:

Список будет автоматически прокручиваться вниз при получении уведомления об изменении набора данных и только в том случае, если последний элемент уже виден на экране.

Вот мой обновленный тестовый проект (я также добавил двойное касание слушатель, чтобы очистить ListView там)

скриншот

person Alexander Farber    schedule 10.02.2015