【发布时间】:2016-05-26 12:56:25
【问题描述】:
在我之前的一个questions 中,我问过(并在this 博客帖子之后由我自己回答)如何正确处理RecyclerView 上的键输入。
现在我意识到,如果我按住箭头键,比如说向下键,向下滚动停止并且RecyclerView 失去焦点,可能是因为滚动速度比所有子代Views 的生成速度都要快.
是否有任何解决方法或更好的做法来正确处理RecyclerView 上的硬件键盘输入?
更新:
我发布了一个基本示例here,它现在可以完美运行,不再有焦点损失。
【问题讨论】:
-
你有minimal reproducible example吗?昨天我只是在
RecyclerView中添加键盘支持,就像你做的那样。就我而言,它是全屏RecyclerView,所以我没有任何焦点问题。如果我们对问题有具体的实施,人们会更容易帮助您解决问题。 -
@CommonsWare 我将尽快创建我的示例。我认为您可以尝试在 RecyclerView 下方添加一个可聚焦的视图(例如一个按钮),并在适配器中使用一个大型数据集,比如说 100 个项目。您应该会看到焦点的异常行为。
-
我明天会再戳这个。我看到了其他奇怪的结果(例如,拖尾效应)。我想也许我们需要等待第二次更新
RecyclerView,直到第一次完成处理之后,而不是每个键事件一个。话虽如此,在垂直滚动列表下方有一个可聚焦的视图首先并不是一个好的键盘 UX。您将在为 Android TV(或其前身 Google TV、Fire TV 等)编写应用程序的报道中看到有关此类事情的讨论。 -
@CommonsWare 我可能已经自己解决了这个问题,我从头开始编码,我得到了这个工作示例github.com/zevektor/KeyboardRecyclerView
标签: android android-recyclerview android-keypad