Управление навигацией с помощью Android телевизора с помощью пульта D-Pad - PullRequest
0 голосов
/ 30 апреля 2020

Я только начал с Android разработки телевизора с энергией и застрял в вопросе навигации. Не знаю, как справиться с этим. Вот моя модель макета.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layoutDescription="@xml/scene_01"
    android:id="@+id/motion_layout"
    tools:showPaths="false">

    <ViewPager
        android:id="@+id/home_pager"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="3:3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHeight_percent="0.7" />


    <include
        android:id="@+id/lyt_toolbar"
        layout="@layout/custom_tv_toolbar_layout"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/content_frame"
        />

</androidx.constraintlayout.motion.widget.MotionLayout>

Это простой макет, который я создал, но не могу переходить от одного вида к другому. По умолчанию вид придерживается ViewPager. Он не перемещается к другому RecyclerView или макету панели инструментов, который является другим ConstraintLayout.

Я не хочу go с библиотекой поддержки Leanback, поскольку я еще не думал об этом.

[EDIT]

Я добавил android:descendantFocusability="blocksDescendants" к ViewPager и android:focusableInTouchMode="true" android:focusable="true" к дочерним представлениям RecyclerView . Теперь элементы RecyclerView начали прокручиваться с помощью пульта, но теперь это касается только этого. Я не могу обработать go до Панель инструментов и ViewPager

[EDIT]

Теперь я добавил android:nextFocusUp="@id/lyt_toolbar" android:nextFocusLeft="@id/home_pager" к RecyclerView и android:nextFocusUp="@id/lyt_toolbar" android:nextFocusDown="@id/recycler_view" до ViewPager . На этот раз фокусировка переместилась в ViewPager из RecyclerView , но затем он никогда не перемещался в любой другой макет.

...