首页 文章

允许Recyclerview项目滚动到Recyclerview的顶部

提问于
浏览
1

我有一个 RecyclerView 列表,我希望当前选中的项目显示在 RecyclerViewtop . 但是,我仍然希望整个列表可以滚动,因此,从所选项目上方删除视图不是一种可能的解决方案 .

我似乎需要一种机制,其中 RecyclerView 项目能够滚动超出 RecyclerView 的界限 . 我不确定这是否可行,如果不是,那么是否有人有解决方案确保当前所选项目滚动到 RecyclerView 的顶部 .

我已经尝试了 smoothScrollToPosition() 但是这不适用于位于 RecyclerView 底部的情况,并希望其中一个中间项目滚动到顶部 .

非常感谢

为了说明,我有4个项目的列表,由于列表中没有足够的项目,recyclerview无法滚动 .

enter image description here

然后我选择一个项目

enter image description here

然后,我希望所选项目滚动到顶部,但对于上面的项目仍然可滚动 .

enter image description here

所以,当我向上滚动时......

enter image description here

2 回答

  • 0

    RecyclerView 上设置一个底部填充,等于项目高度的三倍,然后设置 android:clipToPadding="false" . 这将让您的底部项目滚动到顶部并在底部项目上显示填充,但仅在底部项目上显示 .

    这是一个类似的问题,可以很好地解决这个问题 .

  • 2

    假设您的回收者视图上有点击监听器的项目,当用户点击您获得项目位置和视图的任何项目时,下面的代码对我有效

    RecycleClick.addTo(firstRecyclerView).setOnItemClickListener(new RecycleClick.OnItemClickListener() {
                    @Override
                    public void onItemClicked(RecyclerView recyclerView, int position, View v) {
                        // YOUR CODE
                        int offset = position - yourRecyclerViewLayoutManager.findFirstVisibleItemPosition();
                        if (yourRecyclerViewLayoutManager.findFirstVisibleItemPosition() > 0) offset -= 1;
                        yourRecyclerViewLayoutManager.scrollToPositionWithOffset(position, offset);
    
                    }
                });
    

    确保你的布局管理器来自这样的支持库

    android.support.v7.widget.LinearLayoutManager
    

    否则你将找不到findFirstVisibleItemPosition()方法等

相关问题