【问题标题】:Is it possible to have RecyclerView restore the focused item after a configuration change?配置更改后是否可以让 RecyclerView 恢复焦点项目?
【发布时间】:2016-12-20 14:34:53
【问题描述】:

我注意到,当我在应用程序中使用键盘导航来关注 RecyclerView 中的项目时,在更改屏幕方向后,焦点会转移到 RecyclerView 之外。

相比之下,ListView 总是正确地恢复焦点项目。

这是预期的行为吗?如果不是,我该如何解决?

【问题讨论】:

  • 你的适配器有马厩ID吗?你在哪里创建和设置适配器?(我的意思是在活动/片段生命周期中的哪里)
  • 我测试了有无稳定ID。我在 Fragment.onActivityCreated() 中创建和设置适配器。滚动位置已正确恢复。重点不在。

标签: android android-recyclerview focus


【解决方案1】:

默认情况下它不会这样做。您可以将焦点位置存储在 Activity's 或 Fragment's onSaveInstanceState 方法中的包内,在 onCreate/onViewCreated 中恢复。

Here 的操作方法。

【讨论】:

  • 感谢您的回复。这比手动处理要复杂一些。在下一次布局过程中创建项目视图之前,您无法聚焦项目视图。 RecyclerView 异步执行布局。因此,您需要将焦点位置保存在适配器中,并在为该位置调用 onViewAttachedToWindow() 时调用 requestFocus()。
猜你喜欢
  • 2017-09-05
  • 2016-03-20
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 2020-07-25
相关资源
最近更新 更多