如何在 android Vertical RecyclerView 中实现 StackLayoutManager

How to implement StackLayoutManager in android Vertical RecyclerView

我想实现卡片堆叠,从下到上滑动每张重叠的前一张卡片stack.Someone使用带有自定义布局的 RecyclerView 实现这个manager.I没有足够的代码。

如何使用 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 一起使用:

recyclerView.setLayoutManager(new StackLayoutManager(this));

最后添加 ItemTouchHelper 来处理滑动:

 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);