java - 为什么 RecyclerView 向上滚动将焦点放在上一行的最后一个图块上
问题描述
我正在使用 RecyclerView 为电视应用程序呈现嵌套列表。任何时候只有 4 行可见,当焦点移到行时,我总是滚动到第一个位置。每行有 3 个相同宽度/高度的瓦片。
问题:
当我在第二行时,第一行将超出可见区域,因此 RecyclerView 已回收第一行。现在,如果我向上滚动到第一行,焦点总是转到前一行的第三个图块(在这种情况下是第一行的第三个图块)。
解决此问题的一种方法是增加缓存大小或在此方法中添加额外空间
protected void calculateExtraLayoutSpace(final RecyclerView.State state, final int[] extraLayoutSpace) {
extraLayoutSpace[0] = 1;
extraLayoutSpace[1] = ROW_HEIGHT * NUBER_OF_ROWS_TO_RENDER;
}
两种解决方案都有问题。
有没有更好的方法来正确处理向上滚动。我觉得这是非常基本的要求。
解决方案
推荐阅读
- javascript - 在 Discord 中使用 cron 在特定时间向特定频道发送消息
- php - 联系表格无法识别 UTF-8 希腊语
- scala - Sbt-传递一个项目及其依赖项作为另一个项目的依赖项
- npm - 如何手动确认 package-lock.json 文件中的完整性字段?
- python - 如果 BLAS/LAPACK 是优先 matmul (@) 或点,哪个 MMM 将在 numpy 中并行化?
- java - 在 Spring WebFlux 中捕获 Http 请求和 http 响应
- c# - 将时间四舍五入到半小时间隔并求和
- typescript - 类型错误:来自 jest.spyOn() 的 mockReturnValueOnce 推断参数类型为 void
- javascript - 使用 Flask 防止表单提交
- c# - 通过 RedirectToPage 传递数据