有什么方法可以在RecyclerView中强制聚焦特定项目吗?

时间:2019-11-24 13:48:33

标签: android android-recyclerview focus android-tv persist

我试图在Android中为电视平台设计一个Activity,在其中显示一个基本上是A RecyclerView的菜单,该菜单具有TextView作为RecyclerView的Item View。 RecyclerView中有8个项目。它基本上位于屏幕的左侧。

每当我尝试从RecyclerView导航到其他View组件并导航回RecyclerView时,焦点就会集中在RecyclerView的任何随机项目视图上,焦点是根据距另一个视图组件最近的项目视图来选择的我们正在导航到RecyclerView。

我的问题是,当我导航到RecyclerView时,是否可以将焦点集中在RecyclerView中的特定项目视图上。还可以有人建议写一篇对RecyclerView进行深入研究或理解的博客或段落吗?

我尝试使用PersistentFocusWrapper类,但是在某种程度上它不能正常工作。因此,我正在寻找创建自定义解决方案。

2 个答案:

答案 0 :(得分:0)

您可以将RecyclerView滚动到活动onResume()上您想要的任何位置,并放置以下代码:

 new Handler().postDelayed(
                new Runnable() {
                    @Override public void run() {   

                recyclerView.getLayoutManager().scrollToPosition(youPositionInTheAdapter).

                    }
                }, 50);

答案 1 :(得分:0)

您可以将onFocusChangedListener添加到RecyclerView中,并且一旦视图获得焦点,就可以在onFocusChange回调中将其滚动到正确的位置-

注册监听器-

mRecyclerView.setOnFocusChangeListener(this);

处理焦点-

@Override
public void onFocusChange(View v, boolean hasFocus) {
    if (hasFocus) {
        mRecyclerView.scrollToPosition(position);
    }
}

在hasFocus布尔指示如果视图刚刚得到的焦点或刚刚失去了它