0

示例菜单

请假设该设备没有任何触摸输入。所有控制都通过键盘导航完成。

我想在键盘事件上显示菜单,并将重点放在某个项目上。

当前代码适用于渲染项目。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            // menu button
            case 41:
                if (recyclerView.getVisibility() == View.VISIBLE) {
                    recyclerView.setVisibility(View.INVISIBLE);
                } else {
                    recyclerView.setVisibility(View.VISIBLE);

                    // focus to 9th item
                    recyclerView.getChildAt(8).requestFocus();
                }
            default:
                return super.onKeyDown(keyCode, event);
        }
    }

如果我想专注于第 20 项,我的代码将会中断。

如何专注于未渲染的项目?RecyclerView 还应该滚动到包含第 20 个项目的位置。

4

2 回答 2

0

首先scrollToPosition(index)然后requestFocus(index)

于 2020-12-28T12:21:33.220 回答
0

您可以使用 smoothScrollTo

recyclerview.smoothScrollToPosition(currentPosition + 1);

currentPosition 这里是 RecyclerView 要滚动的可见位置。

于 2020-12-28T12:22:42.580 回答