Я использую новую вкладку Leanback и ViewPager. Я не могу изменить вкладку 1 на вкладку 2 с помощью крестовины. Вкладки меняются с Tab1 на Tab2, когда я дохожу до последнего элемента фрагмента строки в Tab1. Я не могу перейти вверх из элемента rowfragment в меню Tab. Я упомянул пример кода ниже. В видео для разработчиков они могут переключать вкладки крестовиной. Пожалуйста, ответьте на это. заранее спасибо :)
мой файл build.gradle:
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.leanback:leanback:1.0.0'
implementation "androidx.leanback:leanback-tab:1.1.0-beta01"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
Фрагмент файла:
class CollectionDemoFragment : Fragment() {
private lateinit var demoCollectionPagerAdapter : DemoCollectionPagerAdapter
private lateinit var viewPager : LeanbackViewPager
private lateinit var tab_layout : LeanbackTabLayout
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.collection_demo, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
demoCollectionPagerAdapter = DemoCollectionPagerAdapter(childFragmentManager)
viewPager = view.findViewById(R.id.pager)
viewPager.setKeyEventsEnabled(true)
tab_layout = view.findViewById(R.id.tab_layout)
viewPager.adapter = demoCollectionPagerAdapter
tab_layout.setupWithViewPager(viewPager)
}
}
Фрагмент XML-файла:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".CollectionDemoFragment"
android:background="@android:color/white">
<androidx.leanback.tab.LeanbackViewPager
android:id="@+id/pager"
android:layout_below="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.leanback.tab.LeanbackTabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/lb_grey"
android:focusable="true"
android:focusableInTouchMode="true"/>
</androidx.leanback.tab.LeanbackViewPager>
Файл адаптера:
class DemoCollectionPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
val fragment = DemoObjectFragment()
fragment.arguments = Bundle().apply {
putInt(ARG_OBJECT, position + 1)
}
return fragment
}
override fun getCount(): Int = 4
override fun getPageTitle(position: Int): CharSequence {
return "OBJECT ${(position + 1)}"
}
}
Я также просмотрел сайт разработчика и видео на YouTube: https://developer.android.com/training/tv/start/libraries#leanback-tabs-library
https://www.youtube.com/watch?v=OOV6Ef9zDg0&t=1065s в 16:40 секунд
Для большей ясности я добавил изображение экрана. На изображении я не могу перейти от Выбранный элемент -> Tab2 -> Tab3. А теперь, с другой стороны, если я, наконец, нахожусь в элементе Tab2, а затем сразу нажимаю на D-pad, и только он переходит на Tab3 и наоборот, первый элемент на Tab3, тогда я могу перейти на Tab2. Надеюсь, это прояснит мою проблему.