Leanback.DetailsFragment не прокручивается, как ожидалось

У меня есть фрагмент деталей, который использует DetailsOverviewRow и FullWidthDetailsOverviewRowPresenter. При первой загрузке страницы выбираются кнопки действий. Когда я нажимаю один раз, фокус оставляет кнопки, и ничего больше не происходит. Когда я нажимаю второй раз, фокус перемещается в ListRow, который далее вниз по странице. Я пытаюсь понять, почему обзор, или тело, которое он назвал в разделе презентатора, не фокусируется.

DetailsView начальное состояние

DetailsView scrolled

Не должно быть второго "состояния" между двумя скриншотами, где обзор/тело читается?

Возможно, обратите внимание. ПодробностиFragment не объявляется в действии xml, я меняю фрагменты вручную с помощью FragmentTransactions. Кроме того, фрагмент создается с использованием статического метода создания (источник ниже).

Спасибо заранее.

Activity xml

ПодробностиFragment java

Ответ 1

Ненавижу отвечать на мой вопрос. Это было связано с моей неудачей RTFM. Я создал пользовательский интерфейс фрагмента после завершения сетевого запроса. Чтобы FullWidthDetailsPresenter работал правильно, и ClassPresenterSelector() должен быть инициализирован в методе onCreate().

Ответ 2

Я не пробовал этот пример, в частности, но из моего времени, проведенного с помощью библиотеки поддержки Leanback, я узнал, что даже если много полезного материала действительно предоставляется, многого не происходит: D

Итак, я бы попробовал следующее:

1) Убедитесь, что что-то в области, которую вы хотите видеть, настраивается. (Элементы Clickable следует настраивать по умолчанию, но лучше проверить тоже). Я имею в виду, что на скриншоте есть только текст, никаких кнопок или редактируемого контента в этой области. Поэтому, когда вы нажимаете вниз, фокусироваться нечего. Что произойдет, если вы сделаете тело TextView более привлекательным? (Да, можно было бы ожидать, что библиотека поддержки позаботится об этом, но это может быть не так.)

2) Узнайте, что на самом деле фокусируется, когда вы нажимаете вниз, поскольку, как вы сказали, фокус оставляет кнопки - но куда он идет? (Как узнать, какой вид сфокусирован?) У вас может быть "проблема направления". То есть - фокус перемещается по дереву иерархии представлений, а не по тому, что мы видим на экране. В некоторых случаях можно пропустить некоторые элементы или застрять где-то, перемещая фокус через неожиданную часть дерева представлений, что имеет смысл для алгоритма, но не является логичным с точки зрения человека.

Ответ 3

Фокус презентера деталей работает следующим образом:  1) Сначала основное внимание уделяется кнопкам "Действие". Правое/левое навигационное нажатие сдвигает фокус вправо/влево между кнопками действия.

2) Вниз навигация от строки действий сдвигает фокус от строки действий до строки подробностей (отдельные элементы элементов не настраиваются), это достигается путем смещения положения привязки миниатюр к югу.

3) Вниз навигация от строки деталей сдвигает фокус от строки деталей к соответствующей строке.

Таким образом, ряд деталей получает фокус, изменяя положение привязки изображения миниатюр. Уменьшает ли ваше уменьшенное изображение положение привязки при нажатии вниз от строки действий?