在回收视图的视图之间设置自定义边距

时间:2019-04-11 07:45:52

标签: android android-layout android-recyclerview recycler-adapter

我正在尝试制作recyclerview,其中可以基于android中的ID在视图项上添加自定义边距

我尝试过使用具有不同视图的定制适配器,我们可以将其放在一个回收站视图中,但是我只需要一个视图,只想做的是在基于id的视图之间放置自定义边距。

if (category_detail.getId()==0){
        ViewGroup.MarginLayoutParams marginLayoutParams =
                (ViewGroup.MarginLayoutParams) rec_discount.getLayoutParams();
        marginLayoutParams.setMargins(0, 500, 0, 0);
        rec_discount.setLayoutParams(marginLayoutParams);


 }

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用ItemDecoration来实现。

public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
    private int space;

    public SpacesItemDecoration(int space) {
        this.space = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.left = space;
        outRect.right = space;
        outRect.bottom = space;

        // Add top margin only for the first item to avoid double space between items
        if(parent.getChildAdapterPosition(view) == 0) {
            outRect.top = space;
        }
    }
}

这将在回收者视图的所有视图的左侧,右侧和底部添加“空格”像素的空白。您可以根据需要进行自定义。

要使用此类,您可以执行以下操作:

recyclerView.addItemDecoration(new SpacesItemDecoration(10));