原文链接:https://segmentfault.com/a/1190000006858824

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;}@Overridepublic 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 itemsif (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;}@Overridepublic void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {int position = parent.getChildAdapterPosition(view); // item positionint column = position % spanCount; // item columnif (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 edgeoutRect.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));

Android RecyclerView 间距全适配相关推荐

  1. Android指纹支付 - android M / P 全适配

    前言 先说一下为什么会发布出这个库吧.很多没做过指纹相关功能肯定和我一开始一样认为:指纹支付很简单官方封装好的Api调用一下就好了,熟悉几个Api的事情.但是呢,这只是识别指纹,真正的指纹识别应用设计 ...

  2. Android RecyclerView最全使用详解

    本文目录 RecyclerView概述 RecyclerView使用-基础篇 第一步:添加RecyclerView 第二步:添加布局文件 第三步:添加逻辑代码 运行效果 RecyclerView使用- ...

  3. Android笔记之屏幕适配全攻略

    Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对A ...

  4. Android权威官方屏幕适配全攻略

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  5. android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例

    Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...

  6. android 当前置顶的控件,Android利用RecyclerView实现全选、置顶和拖拽功能示例

    前言 今天给大家分享是如何在RecyclerView实现全选,ItemTouchHelper实现侧滑删除,拖拽功能.比较基础.关于RecyclerView的强大,就不多说了.在Android L SD ...

  7. android 配置aspect_Android全面屏适配

    什么是全面屏 概念 很多人可能把全面屏跟曲面屏混淆,其实这是两个不同的概念. 一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之 ...

  8. android 炫酷背景,炫酷-背景图垂直循环滚动登录页,Android RecyclerView实现

    炫酷-背景图上下循环滚动登录页,Android RecyclerView实现方法 某站的登录页背景不停循环滚动,和街边的广告箱很像,感觉不错我也心动了.决定高仿一下,参考了几篇文章后就动手了. 实现步 ...

  9. Android RecyclerView设计通用Adapter

    RecylerView 的使用频率现在也算做是很高了吧?使用起来的确是挺方便的,也容易实现一些比较好看的效果 一.一般步骤 一般的设计流程都是如下所示 首先是需要一个 JavaBean 来承载数据,包 ...

最新文章

  1. mysql for visual
  2. 【狼】unity3d point light 个数限制更改
  3. Java 8 - 收集器Collectors_分组groupingBy
  4. Selenium_WebDriver操作iFrame日历框和复选框_Java
  5. 丰田pcs可以关闭吗_别只知道开不坏,现在的丰田还有这些厉害绝招!
  6. jsp+easyui+DataGrid 例子
  7. pdf转txt出现句子异常中断,如何连接被切断的字符串
  8. char,varchar,nvarchar以及datetime和smalldatetime的区别
  9. 多个pdf怎么合并成一个pdf?如何将几个pdf文件合并成一个pdf?
  10. STM32H7+USB3300+SD作为U盘速度慢的问题
  11. 在线词云图生成(以WordArt为例)
  12. (附源码)计算机毕业设计ssm高校请假管理系统
  13. SAP采购订单控制价格是否可以修改增强 LV69AFZZ
  14. 区块链能够应用在哪些行业
  15. The E-pang Palace(暴力几何)
  16. ARIMA时间序列与LSTM神经网络的PK
  17. 【题解】吉首大学第九届"新星杯"大学生程序设计大赛(重现赛)
  18. NANDFLASH的学习(二)
  19. 数商云家具建材行业电商平台解决方案
  20. android 按键声音

热门文章

  1. 大话移动开发之QT-Quick
  2. sdwan技术发展正蚕食mpls市场—vecloud
  3. 大数据与智能算法(二-应用级技术)-SMU在线学习笔记
  4. c++ 宽搜(倒水)
  5. Storm概念学习系列之storm-starter项目(完整版)(博主推荐)
  6. oracle的游标cursor
  7. php分享十五:php的数据库操作
  8. C#中使用代码动态改变配置文件信息
  9. php使用strstr函数 ,判断字符串A中是否含有字符串B
  10. Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”