Dpad 导航无法在 Appbarlayout 下方的 recyclerview 的电视上工作(recycler view 无法通过 dpad 获得焦点)
Posted
技术标签:
【中文标题】Dpad 导航无法在 Appbarlayout 下方的 recyclerview 的电视上工作(recycler view 无法通过 dpad 获得焦点)【英文标题】:Dpad navigation not working on tv for the recyclerview which is below Appbarlayout (recycler view not getting focus with dpad) 【发布时间】:2019-09-03 08:06:07 【问题描述】:我在 Appbarlayout 下方有 RecyclerView,我在 appbarlayout 中有工具栏,并且它变得专注。我想要的是使用 Dpad 控件来导航我无法做到的 recyclerview。非常感谢任何帮助。
我尝试设置 android:focusable="true" 但没有成功。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:background="@color/colorBackground"
android:orientation="vertical">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/tab_coordinator_layout"
android:layout_
android:layout_
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/tab_appbar_layout"
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
android:layout_
android:layout_
app:layout_scrollFlags="scroll|enterAlways" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_
android:layout_
android:layout_below="@+id/toolbar"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<RelativeLayout
android:layout_
android:layout_
android:focusable="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_
android:layout_
android:padding="3dp"
android:scrollbars="none"
android:focusable="true"
android:descendantFocusability="afterDescendants"
android:scrollingCache="true" />
</RelativeLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
【问题讨论】:
RecyclerView 及其父 RelativeLayout 不应为focusable
。项目视图应该是可聚焦/可点击的。
您能否添加一个答案来解释问题所在,以及您为解决问题所做的更改?
【参考方案1】:
我没有让 RecyclerView 和它的父类 RelativeLayout 成为焦点,而是让项目视图 RelativeLayout 成为焦点,然后它就可以工作了。感谢 ataulm :)
【讨论】:
以上是关于Dpad 导航无法在 Appbarlayout 下方的 recyclerview 的电视上工作(recycler view 无法通过 dpad 获得焦点)的主要内容,如果未能解决你的问题,请参考以下文章
Android Ripple 可绘制和以状态为中心(DPAD 导航)
Kotlin 实现可点击可滑动顶部导航栏(AppBarLayout+TabLayout)和左右切换可滑动页面(ViewPager)的功能
无法使用 NestedScrollView 平滑滚动 AppBarLayout 和折叠工具栏
com.google.android.material.appbar.AppBarLayout$LayoutParams 无法转换为 androidx.coordinatorlayout.widget