首页 > 解决方案 > 有什么方法可以强制将特定项目集中在 RecyclerView 中?

问题描述

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

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

我的问题是,每当我导航到 RecyclerView 时,我是否可以强制将焦点设置在 RecyclerView 中的特定项目视图上。另外,任何人都可以建议一个博客或段落,其中写了对 RecyclerView 的深入工作或理解。?

我尝试过使用 PersistentFocusWrapper 类,但它在这里不起作用。因此,我希望创建一个自定义解决方案。

标签: androidandroid-recyclerviewfocusandroid-tvpersist

解决方案


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

注册监听器 -

mRecyclerView.setOnFocusChangeListener(this);

处理焦点 -

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

hasFocus 布尔值指示视图是刚刚获得焦点还是刚刚失去焦点


推荐阅读