Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了浅谈Android RecyclerView 间距全适配大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文介绍了Android RecyclerView 间距全适配,分享给大家,具体如下:

linearlayoutmanager spacing

import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
 * Created by anonymous on 2016/9/9 0009.
 * <p>
 * SpacesItemDecoration
 * <p>
 * mRecyclerView.addItemDecoration(new SpacesItemDecoration(5));
 */
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.getChildLayoutPosition(view) == 0) {
      outRect.top = space;
    } else {
      outRect.top = 0;
    }
  }
}

使用方法很简单,上面注释中也已经给出:

mRecyclerView.addItemDecoration(new SpacesItemDecoration(5));

GridLayoutManager or StaggeredGridLayoutManager spacing

import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
 * Created by anonymous on 2016/9/9 0009.
 * <p>
 * GridSpacingItemDecoration
 * <p>
 * int spanCount = 3; // 3 columns
 * int spacing = 50; // 50px
 * Boolean includeEdge = false;
 * recyclerView.addItemDecoration(new GridSpacingItemDecoration(spanCount,spacing,includeEdgE));
 */
public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
  privatE int spanCount;
  privatE int spacing;
  private Boolean includeEdge;

  public GridSpacingItemDecoration(int spanCount,int spacing,Boolean includeEdgE) {
    this.spanCount = spanCount;
    this.spacing = spacing;
    this.includeEdge = includeEdge;
  }

  @Override
  public void getItemOffsets(Rect outRect,RecyclerView.State statE) {
    int position = parent.getChildAdapterPosition(view); // item position
    int column = position % spanCount; // item column
    if (includeEdgE) {
      outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
      outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)
      if (position < spanCount) { // top edge
        outRect.top = spacing;
      }
      outRect.bottom = spacing; // item bottom
    } else {
      outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
      outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /  spanCount) * spacing)
      if (position >= spanCount) {
        outRect.top = spacing; // item top
      }
    }
  }
}

此处不仅对间距进行了处理,而且对spanCount也进行了处理,使用方法

    int spanCount = 3; // 3 columns
    int spacing = 50; // 50px
    Boolean includeEdge = false;
    mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(spanCount,includeEdgE));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

大佬总结

以上是大佬教程为你收集整理的浅谈Android RecyclerView 间距全适配全部内容,希望文章能够帮你解决浅谈Android RecyclerView 间距全适配所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:间距