У меня есть фрагмент сведений, в котором используются DetailsOverviewRow и FullWidthDetailsOverviewRowPresenter. При первой загрузке страницы выбираются кнопки действий. Когда я нажимаю один раз, фокус покидает кнопки, и больше ничего не происходит. Когда я нажимаю второй раз, фокус перемещается на ListRow, который находится ниже по странице. Я пытаюсь понять, почему раздел обзора или тела, как его называют в докладчике, не фокусируется.
Не должно ли быть второго «состояния» между двумя снимками экрана, где обзор / тело читается?
Возможно, стоит отметить. DetailsFragment не объявлен в XML-файле действий, я меняю фрагменты вручную с помощью FragmentTransactions. Кроме того, экземпляр фрагмента создается с использованием статического метода создания (источник ниже).
Заранее спасибо.
3 ответа
Ненавижу отвечать на свой вопрос. Это произошло из-за моей неудачи с RTFM. Я создавал пользовательский интерфейс фрагмента после завершения сетевого запроса. Чтобы FullWidthDetailsPresenter работал правильно, он и ClassPresenterSelector () должны быть инициализированы в методе фрагментов onCreate ().
В частности, я не пробовал этот пример, но за время, проведенное с библиотекой поддержки Leanback, я узнал, что, несмотря на то, что много полезного действительно предоставляется, многого нет: D
Итак, я бы попробовал следующее:
1) Убедитесь, что что-то в области, которую вы хотите видеть, можно сфокусировать. (Активные элементы должны быть по умолчанию фокусируемыми, но лучше также проверить) Я имею в виду, что на скриншоте есть только текст, никаких кнопок или редактируемого контента в этой области. Так что когда вы нажимаете, фокусироваться не на чем. Что произойдет, если сделать фокусируемым тело TextView? (Да, можно было бы ожидать, что библиотека поддержки позаботится об этом, но это может быть не так.)
2) Узнайте, что на самом деле фокусируется, когда вы нажимаете вниз, поскольку, как вы сказали, фокус уходит от кнопок - но куда он уходит? (Как узнать, какое представление сфокусировано?) Вы где-то может быть "проблема с направлением". То есть фокус перемещается на основе дерева иерархии представлений, а не на основе того, что мы видим на экране. В некоторых случаях можно пропустить некоторые элементы или застрять где-нибудь, переместив фокус через неожиданную часть дерева представления, что имеет смысл для алгоритма, но не логично с точки зрения человека.
Фокус докладчика подробностей работает следующим образом: 1) Сначала фокус дается кнопкам действий. Нажатие вправо / влево перемещает фокус между кнопками действий вправо / влево.
2) Нажатие вниз навигатора из строки действий перемещает фокус со строки действий на строку деталей (отдельные элементы деталей не могут быть сфокусированы), это достигается смещением позиции привязки эскиза к югу.
3) Нажатие вниз со строки сведений перемещает фокус со строки сведений на связанную строку.
Таким образом, строка сведений получает фокус за счет изменения положения привязки изображения эскиза. Меняет ли ваше миниатюрное изображение свое положение привязки при нажатии из строки действий?
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.