Подтвердить что ты не робот

Android smoothScrollBy ведет себя плохо

У меня есть ListView, который я вызываю smoothScrollBy() on. 95% времени, smoothScrollTo() ведет себя так, как предполагалось. Однако есть моменты, когда это не заканчивается в намеченном месте! Я подтвердил, что я даю ему такое же значение. Я замечаю, что гладкая прокрутка не так гладко, когда сделаны ошибки, однако нет других задач, которые выполняет мое приложение, которые я бы контролировал.

Я не совсем уверен, что происходит в фоновом режиме, но вероятным виновником является сбор мусора.

точность 95% недостаточно хороша в этой ситуации. Я собираюсь реализовать какой-то механизм коррекции, чтобы убедиться, что ListView попадает в правильное место в этих случаях.

Есть ли лучший способ использовать smoothScrollBy(), кроме простого вызова view.smoothScrollBy(distance, time);?

4b9b3361

Ответ 1

Попробуйте несколько из них:

Listview имеет свой собственный механизм прокрутки. Он прокручивается при добавлении содержимого.

  • Назначьте высоту списка (android: layout_height) в match_parent или fill_parent.

  • Если вы назначаете адаптер в рабочий поток. Не выполняйте никаких действий пользовательского интерфейса в потоке.

Если это не решит проблему. Отправьте код, в котором вы назначаете адаптер, в список, если он есть. Или соответствующий код.

Также код макета xml.

Надеюсь, что это поможет.

Ответ 2

иногда это происходит из-за проблемы синхронизации. Когда представления добавляются в ваш список и время, которое вы делаете

view.smoothScrollBy(distance, time);

listview или ui по-прежнему не нуждаются в обновлении. Так что сделайте это в потоках сообщений просмотров с определенной задержкой. Например.

view.postDelayed(new Runnable{
    view.smoothScrollBy(distance, time);
},1000);