最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Android RecyclerView 間距全適配

 更新時間:2017年12月06日 09:59:11   作者:anonymoussf  
本篇文章主要介紹了淺談Android RecyclerView 間距全適配,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了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;
    }
  }
}

使用方法很簡單,上面注釋中也已經(jīng)給出:

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, View view, RecyclerView parent, 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, spacing, includeEdge));

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

沂水县| 寿阳县| 固阳县| 偏关县| 云林县| 黄山市| 闵行区| 汨罗市| 清流县| 贺兰县| 门头沟区| 衡山县| 井陉县| 新竹市| 连城县| 莱芜市| 鄯善县| 基隆市| 中山市| 望都县| 清水河县| 明溪县| 池州市| 锦州市| 岳池县| 河西区| 揭东县| 山丹县| 中方县| 东乡族自治县| 富民县| 双江| 河池市| 临洮县| 衡南县| 芦山县| 大化| 田东县| 巧家县| 田东县| 天峨县|