我正在使用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>
注意: 如果我向左/向右对齐按钮,焦点将正常工作。
答案 0 :(得分:0)
就我而言,当我需要关注任何视图时,这是可行的
view.requestFocus();
答案 1 :(得分:0)
尝试将以下属性添加到Button
android:focusableInTouchMode="true"
并从FrameLayout中删除以下属性
android:nextFocusDown="@id/midPanel"
android:nextFocusForward="@id/midPanel"
答案 2 :(得分:0)
就我而言,我需要关注RowSupportFragment项外部的任何视图,因此使用focusOutEnd,focusOutFront和Leanback Style中的其他焦点功能解决了我的解决方案。
就像从RowSupportFragment请求将焦点放在外部Button小部件上一样,设置<item name="focusOutEnd">true</item>
的样式对我有用。