Как переместить фокус со строки RowsSupportFragment на следующий компонент макета? - PullRequest
0 голосов
/ 11 октября 2019

Я использую библиотеку Android Leanback для создания телевизионного приложения. У меня есть макет, который раздувает Fragment (который является RowsSupportFragment) и ниже, что есть кнопка. Поэтому, когда я прокручиваю вниз до списка элементов в RowsSupportFragment, после достижения последнего элемента фокус не переходит к кнопке. Я уже пытался установить focusable (true), nextFocusDown (buttonId) и т. Д.

Я вижу, что RowsSupportFragment внутренне использует VerticalGridView для раздувания списка элементов.

Кто-нибудь имеет какое-либо представление об этом?

вот мой макет:

<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<FrameLayout
android:id="@+id/listviewFragmentId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:nextFocusDown="@id/nextButtonId"
android:nextFocusForward="@id/nextButtonId" 
layout_constraintBottom_toTopOf="@id/nextButtonId"/>

<Button
android:id="@+id/nextButtonId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:focusable="true"
android:text="Hello Next"/>

<// other items>
</android.support.constraint.ConstraintLayout>

Примечание: Фокус работает правильно, если я выровняю кнопку влево / вправо.

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Попробуйте добавить следующий атрибут к кнопке

android:focusableInTouchMode="true"

и удалить следующие атрибуты из FrameLayout

android:nextFocusDown="@id/midPanel"
android:nextFocusForward="@id/midPanel"
0 голосов
/ 11 октября 2019

В моем случае это была работа, когда мне нужно сосредоточиться на любых видах

view.requestFocus();
...