Intereting Posts
Как получить красную звездочку в записи <string> Не удалось импортировать поддержку android v4 или v7 в библиотеке, используя productFlavors Android не смог разрешить все зависимости для конфигурации 'classpath' Как реализовать базу данных объектов один-ко-многим в sqlite для android Исключительное исключение из режима прерывания для Android Android ViewPager – Перекрытие фрагментов, когда ширина страницы установлена ​​на 90% Android – Можно ли отключить нажатие кнопки «Домой» Как запросить журнал MMS в Android Ящик навигации без панели действий Автоматическое изменение размера в cocos2dx SlidingDrawer не может иметь НЕОБХОДИМЫЕ измерения Получить последние сообщения / данные из firebase с лимитом 10 записей в android и заполнить в Listview Как разобрать JSONArray в android Android – отключить элемент списка, щелкнуть и повторно использовать его. Как установить пользовательский шрифт в .xml-файле вместо файла .java?

Как получить правильное расстояние прокрутки RecyclerView при использовании StaggeredGridLayoutManager?

Я создал представление заголовка, создав и ViewHolder уникальный ViewHolder в RecyclerView из-за специального вида вида. Заголовок полностью пуст, но он полный, и его высота очень хорошо рассчитана для следующих анимаций, когда пользователь прокручивает RecyclerView :

  • TextView переместится из центра заголовка в Toolbar и, наконец, «станет» его названием. Во время процесса TextView будет уменьшаться в соответствии с вертикальным смещением.
  • Другой TextView будет перемещаться вместе с первым TextView одновременно, но он не будет сокращаться. Вместо этого он изменит альфу и, наконец, станет прозрачным, когда первый TextView находится в правильном положении на Toolbar .

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

Вот что я сделал сейчас:

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { private int totalDy = 0; @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { totalDy -= dy; // setAlpha, setTranslationY and setScale here according to totalDy. } }); 

Он отлично работает, когда набор данных не изменяется. Однако, когда я прокручиваю вниз, вставляю / notifyItemInserted/Removed() любые элементы в / из адаптера и notifyItemInserted/Removed() , totalDy не будет точным. Например, когда я удалил элемент, totalDy больше не вернется 0.

В результате кажется, что использование totalDy для получения прокрутки RadyclerView не будет работать хорошо. Есть ли способы для разработчиков получить его?

УВЕДОМЛЕНИЕ. Я использую StaggeredGridLayoutManager и я чувствую, что он отличается от LinearLayoutManager .