大家好,我正在开发应用程序,布局结构如下:
RelativeLayout:
CompoundView:
CompoundView:
RelativeLayout:
Button
Button
RecyclerView
BrowseFragment:
Only rows
我的问题是,当我到达浏览片段的第一行和其中的第一项时,我想向上移动(D-PAD-UP)来聚焦按钮,它什么也没有做,只有当我向左推时才起作用(D-PAD-LEFT) 。有人对此有解决方案吗?
最佳答案
因此,由于某种原因,问题出在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
*/
}
瞧,它有效。