自定义RecyclerView间距

自定义RecyclerView间距(上下左右都一样间距)

如图所示:
在这里插入图片描述

  • 直接上代码(自定义间距,继承RecyclerView.ItemDecoration 利用getItemOffsets()里面修改):
/**
 * 自定义recyclerView间距,(上下左右都一样间距)
 * @author 2216264142@qq.com
 **/
public class CustomizeItemDecoration extends RecyclerView.ItemDecoration {
    /**
     * 间距大小
     */
    float space;
    /**
     * 排列数量
     */
    int count;

    public CustomizeItemDecoration(float space,int count) {
        this.space = space;
        this.count = count;
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        //数据下标,由0开始
        int position = parent.getChildAdapterPosition(view);
        //头部
        outRect.top = dip2px(parent.getContext(),space);
        //右边
        outRect.right = dip2px(parent.getContext(),space);
        if (position % count == 0) {
            //左边
            outRect.left = dip2px(parent.getContext(),space);
        }
    }

     /**
     * dp转成px
     * @param context 上下文
     * @param dpSize 大小
     * @return px大小
     */
    private int dip2px(Context context, float dpSize) {
        final float density = context.getResources().getDisplayMetrics().density;
        return (int) (dpSize * density + 0.5f);
    }
}

如果想要第一行间距为0:把 CustomizeItemDecoration 中 outRect.top = dip2px(parent.getContext(),space); 换成以下代码

 //(头部一行没有设置间距)
if (position>count-1){
           outRect.top = dip2px(parent.getContext(),space);
}
  • 使用方法:(RecyclerView recyclerView)
//在addItemDecoration()里面new就好
recyclerView.addItemDecoration(new CustomizeItemDecoration(5f,2));

注意:参数count(就是上面的2)的值要与排列数量相同,要不然没有实现一样间距

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 开发中,可以通过设置 RecyclerView间距来调整其显示效果。下面是一些实现方法: 1. 在 RecyclerView 的 item 布局文件中添加 margin 属性。例如,在 LinearLayout 布局中,可以通过设置 android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft、android:layout_marginRight 属性来设置上下左右的间距。 2. 通过 RecyclerView.ItemDecoration 实现间距设置。自定义一个 RecyclerView.ItemDecoration 类,重写 onDraw() 和 getItemOffsets() 方法,在 getItemOffsets() 方法中设置 item 之间的间距。 ```java public class MyItemDecoration extends RecyclerView.ItemDecoration { private int space; public MyItemDecoration(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; if (parent.getChildLayoutPosition(view) == 0) { outRect.top = space; } else { outRect.top = 0; } } } ``` 在 RecyclerView 的代码中调用 setItemDecoration() 方法,将自定义的 MyItemDecoration 类传入即可。 ```java recyclerView.addItemDecoration(new MyItemDecoration(10)); ``` 3. 使用 RecyclerView 的 LayoutManager 来实现间距设置。例如,使用 LinearLayoutManager 的 setPadding() 和 setClipToPadding() 方法来设置间距。 ```java LinearLayoutManager layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); recyclerView.setPadding(10, 10, 10, 10); recyclerView.setClipToPadding(false); ``` 以上是三种常用的设置 RecyclerView 间距的方法,可以根据具体需求选择适合自己的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值