如何在Android Vertical RecyclerView中实现StackLayoutManager [英] How to implement StackLayoutManager in android Vertical RecyclerView

查看:106
本文介绍了如何在Android Vertical RecyclerView中实现StackLayoutManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从下到上实现卡片叠,每个重叠的先前卡片叠都要刷卡.有人用带有自定义布局管理器的RecyclerView来实现.我没有足够的代码.

I want to implement stack of cards from bottom to top swipe each overlap previous card stack.Someone implement this using RecyclerView with custom Layout manager.I don't have enough code.

如何使用Recyclerview做到这一点.

How to do this using Recyclerview.

推荐答案

尝试这种方式:

public class StackLayoutManager extends LinearLayoutManager {

    public StackLayoutManager(Context context) {
        super(context);
        setStackFromEnd(true);
    }

    @Override
    public RecyclerView.LayoutParams generateDefaultLayoutParams() {
        return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    }

    @Override
    public boolean canScrollHorizontally() {
        return false;
    }

    @Override
    public boolean canScrollVertically() {
        return false;
    }

    @Override
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
        super.onLayoutChildren(recycler, state);
        updatePosition();
    }

    private void updatePosition() {
        int childCount = getChildCount();
        for (int i = 0; i < childCount; i++) {
            View view = getChildAt(i);
            ViewCompat.setTranslationY(view, -view.getTop());
        }
    }
}

与您的RecyclerView一起使用:

Than use it with your RecyclerView:

recyclerView.setLayoutManager(new StackLayoutManager(this));

最后添加ItemTouchHelper来处理刷卡:

And finally add ItemTouchHelper for handling swiping:

 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
            int pos = viewHolder.getAdapterPosition();
            if (pos != RecyclerView.NO_POSITION) {
                adapter.onRemove(viewHolder);
            }
        }
    });

itemTouchHelper.attachToRecyclerView(recyclerView);

这篇关于如何在Android Vertical RecyclerView中实现StackLayoutManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆