Android RecyclerView 间距全适配
原文链接: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 间距全适配相关推荐
- Android指纹支付 - android M / P 全适配
前言 先说一下为什么会发布出这个库吧.很多没做过指纹相关功能肯定和我一开始一样认为:指纹支付很简单官方封装好的Api调用一下就好了,熟悉几个Api的事情.但是呢,这只是识别指纹,真正的指纹识别应用设计 ...
- Android RecyclerView最全使用详解
本文目录 RecyclerView概述 RecyclerView使用-基础篇 第一步:添加RecyclerView 第二步:添加布局文件 第三步:添加逻辑代码 运行效果 RecyclerView使用- ...
- Android笔记之屏幕适配全攻略
Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对A ...
- Android权威官方屏幕适配全攻略
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例
Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...
- android 当前置顶的控件,Android利用RecyclerView实现全选、置顶和拖拽功能示例
前言 今天给大家分享是如何在RecyclerView实现全选,ItemTouchHelper实现侧滑删除,拖拽功能.比较基础.关于RecyclerView的强大,就不多说了.在Android L SD ...
- android 配置aspect_Android全面屏适配
什么是全面屏 概念 很多人可能把全面屏跟曲面屏混淆,其实这是两个不同的概念. 一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之 ...
- android 炫酷背景,炫酷-背景图垂直循环滚动登录页,Android RecyclerView实现
炫酷-背景图上下循环滚动登录页,Android RecyclerView实现方法 某站的登录页背景不停循环滚动,和街边的广告箱很像,感觉不错我也心动了.决定高仿一下,参考了几篇文章后就动手了. 实现步 ...
- Android RecyclerView设计通用Adapter
RecylerView 的使用频率现在也算做是很高了吧?使用起来的确是挺方便的,也容易实现一些比较好看的效果 一.一般步骤 一般的设计流程都是如下所示 首先是需要一个 JavaBean 来承载数据,包 ...
最新文章
- mysql for visual
- 【狼】unity3d point light 个数限制更改
- Java 8 - 收集器Collectors_分组groupingBy
- Selenium_WebDriver操作iFrame日历框和复选框_Java
- 丰田pcs可以关闭吗_别只知道开不坏,现在的丰田还有这些厉害绝招!
- jsp+easyui+DataGrid 例子
- pdf转txt出现句子异常中断,如何连接被切断的字符串
- char,varchar,nvarchar以及datetime和smalldatetime的区别
- 多个pdf怎么合并成一个pdf?如何将几个pdf文件合并成一个pdf?
- STM32H7+USB3300+SD作为U盘速度慢的问题
- 在线词云图生成(以WordArt为例)
- (附源码)计算机毕业设计ssm高校请假管理系统
- SAP采购订单控制价格是否可以修改增强 LV69AFZZ
- 区块链能够应用在哪些行业
- The E-pang Palace(暴力几何)
- ARIMA时间序列与LSTM神经网络的PK
- 【题解】吉首大学第九届"新星杯"大学生程序设计大赛(重现赛)
- NANDFLASH的学习(二)
- 数商云家具建材行业电商平台解决方案
- android 按键声音
热门文章
- 大话移动开发之QT-Quick
- sdwan技术发展正蚕食mpls市场—vecloud
- 大数据与智能算法(二-应用级技术)-SMU在线学习笔记
- c++ 宽搜(倒水)
- Storm概念学习系列之storm-starter项目(完整版)(博主推荐)
- oracle的游标cursor
- php分享十五:php的数据库操作
- C#中使用代码动态改变配置文件信息
- php使用strstr函数 ,判断字符串A中是否含有字符串B
- Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”