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

DetailsView initial state

DetailsView scrolled

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

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

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

Активность xml

ПодробностиФрагмент java

11
Redshirt 5 Сен 2016 в 02:37

3 ответа

Лучший ответ

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

1
Redshirt 1 Окт 2016 в 21:44

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

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

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

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

2
Community 23 Май 2017 в 12:15

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

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

3) Нажатие вниз со строки сведений перемещает фокус со строки сведений на связанную строку.

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

2
NIPHIN 18 Сен 2016 в 07:19