RecyclerView 自定义item间隔

标签: android
7人阅读 评论(0) 收藏 举报
分类:

RecyclerView 自定义item间隔

通过继承RecyclerView.ItemDecoration实现自定义item间隔

recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.set(left,top,right,bottom);
    }
});

我们也可以根据item的不同位置设置不同的间隔

recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
         if (parent.getChildAdapterPosition(view) == positon) {
             outRect.set(left,top,right,bottom);
         }
    }
});

获取位置有两个方法

/**
  * Return the adapter position that the given child view corresponds to.
  *
  * @param child Child View to query
  * @return Adapter position corresponding to the given view or {@link #NO_POSITION}
  */
public int getChildAdapterPosition(View child) {
        final ViewHolder holder = getChildViewHolderInt(child);
        return holder != null ? holder.getAdapterPosition() : NO_POSITION;
}

/**
  * Return the adapter position of the given child view as of the latest completed layout pass.
  * <p>
  * This position may not be equal to Item's adapter position if there are pending changes
  * in the adapter which have not been reflected to the layout yet.
  *
  * @param child Child View to query
  * @return Adapter position of the given View as of last layout pass or {@link #NO_POSITION} if
  * the View is representing a removed item.
  */
public int getChildLayoutPosition(View child) {
    final ViewHolder holder = getChildViewHolderInt(child);
    return holder != null ? holder.getLayoutPosition() : NO_POSITION;
}

简单说就是getChildLayoutPosition方法可能会由于RecyclerView的动画未执行完毕,而返回了旧的位置,比如说执行了notifyItemInsert()后立即执行getChildLayoutPosition就会返回未添加item之前的位置,使用时需要注意。

查看评论

Android自定义组合控件

【课程介绍】 开发工具:Android Studo ;如何自定义组合控件
  • 2016年11月13日 21:15

Recyclerview item上下间距过大

写个类微信的聊天界面,发现item的上下间距总是过大,网上查了很多方法都不适用,不过倒是学习了一波修改item的间距的操作,下面贴网址,没有都试过,效果看个人实践: 1、RecycleView设置i...
  • wenghaoduan
  • wenghaoduan
  • 2017-11-12 16:07:10
  • 599

android的RecycleView的基本使用和item间隔问题

昨天使用了RecycleView + CardView的组合进行列表的设计 却花了一个晚上的时间来调试,RecyclView实现需要: 1.封装一个自定义的Item数据类 2.需要用Arra...
  • u013113491
  • u013113491
  • 2015-04-14 19:14:47
  • 13422

RecycleView设置item上下间距

使用方式:RecyclerView rvParentCategory = (RecyclerView) view.findViewById(R.id.rv_parent_category); ...
  • u010378579
  • u010378579
  • 2017-02-10 10:03:41
  • 1686

RecycleView item 间距设置

RecycleView 虽然相对ListView GridView 做了很多的优化。方便开发者的使用,性能也得到了很大的提高,但是悲剧的是RecycleView 设置Item间距并没有那么容易。。。 ...
  • csdndouniwan
  • csdndouniwan
  • 2016-06-26 12:39:44
  • 15892

RecyclerView 上下左右四种间距的设置方法

RecyclerView控件大家肯定不陌生,已经应用有一段时间了,最近在项目中写一个GridLayout样式的RecyclerView时需要设置,item之间左右的间距,下面是我总结的一个设置间距的方...
  • yangbin0513
  • yangbin0513
  • 2017-05-10 11:14:54
  • 2111

RecyclerView仿GridView的item间距

public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int space; pu...
  • xiaoshitounan
  • xiaoshitounan
  • 2017-01-12 15:58:09
  • 2383

android recyclerView 设置item间的间距

使用场景:recyclerview要通过代码设置item间的场景解决方案:1.重写RecyclerView.ItemDecoration方法,代码如下:public class SpaceItemDe...
  • ss182172633
  • ss182172633
  • 2018-02-08 14:01:02
  • 352

DividerItemDecoration

  • 2015年12月07日 09:49
  • 4KB
  • 下载

Android RecyclerView设置item间距

RecyclerView没有可以直接设置间距的属性,但可以用ItemDecoration来装饰一个item,所以继承重写ItemDecoration就可以实现间距了 public class S...
  • haozidao
  • haozidao
  • 2016-06-29 16:50:32
  • 2261
    个人资料
    等级:
    访问量: 383
    积分: 85
    排名: 156万+
    文章分类
    文章存档