android - 有什么方法可以强制将特定项目集中在 RecyclerView 中?
问题描述
我正在尝试在 Android 中为电视平台设计一个 Activity,在其中我显示一个基本上是 A RecyclerView 的菜单,其中 TextView 作为 RecyclerView 的项目视图。RecyclerView 中有 8 个项目。它基本上位于屏幕的左侧。
每当我尝试从 RecyclerView 导航到其他 View 组件并导航回 RecyclerView 时,焦点都在 RecyclerView 的任何随机项目视图上,焦点是根据离我们正在导航的另一个视图组件最近的项目视图选择的到 RecyclerView。
我的问题是,每当我导航到 RecyclerView 时,我是否可以强制将焦点设置在 RecyclerView 中的特定项目视图上。另外,任何人都可以建议一个博客或段落,其中写了对 RecyclerView 的深入工作或理解。?
我尝试过使用 PersistentFocusWrapper 类,但它在这里不起作用。因此,我希望创建一个自定义解决方案。
解决方案
您可以将 onFocusChangedListener 添加到您的 RecyclerView 并在 onFocusChange 回调中,一旦视图获得焦点,您就可以滚动到正确的位置 -
注册监听器 -
mRecyclerView.setOnFocusChangeListener(this);
处理焦点 -
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mRecyclerView.scrollToPosition(position);
}
}
hasFocus 布尔值指示视图是刚刚获得焦点还是刚刚失去焦点
推荐阅读
- solidity - 如何正确将 SafeMath.sol 导入合约
- r - Smote - 选择 Perc_under 和 Perc_Over
- python - AttributError:“模块”没有属性
- mysql - 在 MYSQL 中如何用减法更新 GROUP BY
- asp.net-core - ClaimTypes.NameIdentifier 与 Microsoft GraphApi 用户 ID 有何关系
- google-cloud-platform - 是否可以仅在 GCP 上首次启动时运行启动脚本?
- php - 引导切换没有响应
- jdbc - Kafka Connect JDBC Sink 连接器:如何删除没有 NULL 值的记录?
- python - 无法在 Ejabberd 19.09.1 中启动外部身份验证程序
- java - 在背景上设置对象/图像的位置