首页 > 解决方案 > 为什么 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;
    }

两种解决方案都有问题。

有没有更好的方法来正确处理向上滚动。我觉得这是非常基本的要求。

标签: javaandroidandroid-recyclerviewnestedrecyclerview

解决方案


推荐阅读