【问题标题】:use RecyclerView like vertical viewpager像垂直视图分页器一样使用 RecyclerView
【发布时间】:2018-11-20 04:32:57
【问题描述】:

这样可以使用像verticalpager这样的recyclerview吗?
我想要的是当用户滚动总是从顶部偏移的第一项为零时。就像您在 viewpager 中滚动时一样。这可能吗?

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    由于 API 级别 25,因此有一个 PagerSnapHelper

    SnapHelper snapHelper = new PagerSnapHelper();
    snapHelper.attachToRecyclerView(mRecyclerView);
    

    另见this answer

    【讨论】:

    • 现在这个类是 RecyclerView 兼容库的一部分。您可以在 api 25 以下的设备上使用它
    【解决方案2】:

    是的,你可以。

    你可以使用一个简单的LinearLayoutManager:

    recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL));
    

    对于RecyclerView.Adapter 查看项目,使用layout_height="match_parent" 来获得全屏视图。

    或者只使用这个库:RecyclerViewPager


    更新:

    recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(int newState) {
            if(newState == RecyclerView.SCROLL_STATE_IDLE) {
                // special handler to avoid displaying half elements
                scrollToNext();
            }
            animate();
        }
    
        @Override
        public void onScrolled(int dx, int dy) {
            animate();
        }
    });
    

    【讨论】:

    • 嗨 victore 感谢您的关注,但就像我说的我想要一个垂直滚动并且我使用 match_parent 来填充所有视图但我的问题是当用户滚动时,我希望我的项目始终位于“通常屏幕”的顶部可以是一个项目的一半,另一个我不想要的项目的一半”,我不能出于某些原因使用 viewpager。再次感谢。
    • @max 好的,我明白了。在这种情况下,我建议您实施自定义LayoutManager。有用的文章wiresareobsolete.com/2014/09/…
    • @max,你找到解决这个问题的方法了吗?
    猜你喜欢
    • 2015-02-11
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2020-11-09
    • 2011-07-29
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多