Как добавить логику SpanSizeLookup в VerticalGridView? - PullRequest
0 голосов
/ 29 апреля 2019

Я занимаюсь разработкой приложения для телевизионной платформы и столкнулся с проблемой, когда по умолчанию RecyclerView с GridLayoutManager не может правильно обрабатывать управление фокусировкой из DPAD.У него есть следующие проблемы:

  1. Фокус теряется при слишком быстрой прокрутке списка
  2. При слишком быстрой прокрутке фокус переходит на первую позицию в списке
  3. Иногда,при нажатии кнопки вниз DPAD фокус устанавливается с неверным индексом (например, у нас есть 4 столбца, фокус находится на первом элементе, и после нажатия кнопки вниз DPAD он переходит на индекс 5, но он должен переходить на индекс 4)
  4. Фокус теряется после состояния восстановления восстановления
  5. Множество других мелких проблем ...

Чтобы избежать такого поведения, я использую VerticalGridView из leanbackбиблиотека с дополнительным кодом, и она работает практически идеально - никаких проблем, и она работает с мышью и клавиатурой.Единственное, что я не могу сделать - настроить SpanSizeLoockup как в «мобильном» GridLayoutManager, потому что такой функциональности нет.Мне нужно это, чтобы использовать представления заголовка в моем списке с размером пролета для всей ширины в строке.Логика LayoutManager слишком странна для понимания, и я хочу добиться этого настолько просто, насколько это возможно.

Вопрос: Как я могу добавить функциональность SpanSizeLoockup к VerticalGridView и ничего там не сломать?

Единственное, что приходит на ум - это использовать пользовательское представление, представляющее одну строку в списке с заголовком, но это также может нарушить логику фокуса.

Заранее спасибо!

1 Ответ

0 голосов
/ 27 июня 2019

Краткий ответ - это невозможно без сложной модификации исходного кода.

...