大家好,我正在处理应用程序,我的布局结构如下:
RelativeLayout:
CompoundView:
CompoundView:
RelativeLayout:
Button
Button
RecyclerView
BrowseFragment:
Only rows
我的问题是当我到达第一行浏览片段及其中的第一项并且我想上升(D-PAD-UP)来聚焦按钮它什么都不做它只有当它工作时我向左推(D-PAD-LEFT)。有人有解决方案吗?
答案 0 :(得分:2)
因为某些原因问题出在BrowseFrameLayout中,为了解决这个问题,我不得不重写onFocusSearchListener并自己管理焦点。
在我扩展的BrowseFragment中,我有这个方法:
public void workaroundFocus(){
if(getView() != null) {
View viewToFocus = getActivity().findViewById(R.id.view_to_focus);
BrowseFrameLayout browseFrameLayout = getView().findViewById(android.support.v17.leanback.R.id.browse_frame);
browseFrameLayout.setOnFocusSearchListener((focused, direction) -> {
if (direction == View.FOCUS_UP) {
return viewToFocus;
}
else {
return null;
}
});
}
}
然后:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
workaroundFocus();
/*
Rest of the code
*/
}
瞧它有效。
答案 1 :(得分:1)
由于您使用的是RelativeLayout
,因此您应按照要导航的顺序布置组件。
使用RelativeLayout参考文档中提供的XML
属性,您也可以建立导航订单:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/reminder" />
<Spinner
android:id="@+id/dates"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
<Spinner
android:id="@id/times"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentRight="true" />
<Button
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/times"
android:layout_alignParentRight="true"
android:text="@string/done" />
</RelativeLayout>
此处dates
Spinner
低于name
EditText
以及times
Spinner
左侧的times
组件低于name
,done
Button
低于times
。见下图:
有关更多与电视相关的详细信息,请参阅Build Basic TV Layouts指南。