首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android:流式布局实现总结

在添加时候需要动态计算行数,以及行中剩余宽度是否可以展示目标条目。...通常情况下,与ChipGroup配套使用是Chip——也就是ChipGroup中条目。Chip本身具有选中和点击状态,也可以加入图片,可以修改文本(颜色、字号、字体等)。...关于ChipChipGroup使用可以参考我之前整理《Android:Chip、ChipGroups、ChipDrawable》链接为: https://www.jianshu.com/p/d64a75ec7c74...但是在构建对象时必须指定行或者,这样就导致内容超过屏幕宽度或者高度时,并不会主动换行——而是优先适配行数,然后滚动显示。...(5)、GridLayoutManager 通常情况下,GridLayoutManager用来实现固定/行数网格布局,但是,通过通过调整span数量就可以控制单个条目占几列/几行。

3.6K20

关于RecyclerView你知道不知道都在这了(上)前言目录正文

还有一点细节需要注意,当使用 GridLayoutManager 时,RecyclerView 宽高在 match_parent wrap_content 两种情况下表现完全不一样,具体表现怎样...同样道理,当设定为 VERTICAL 竖直方向样式时,那么可以自定义为每个 item 设定要占据,最多不超过指定。...gridLayoutManager); 虽然提供了该方法让网格布局可以更加多样化布局,但仍然无法满足一些场景,比如当设定为多行样式时,此时就只支持自定义每个 item 占据行数,只有行数!...网格样式支持 item 占据多宽度;瀑布流支持 item 占据总宽度,不支持只占据其中几列。 当设置为水平方向样式时,以上结论中行列对调,宽度高度对调。...看了下源码注释才发现,这个方法作用是用于根据情况是否拦截触屏事件分发。

3.1K60
您找到你想要的搜索结果了吗?
是的
没有找到

详解RecyclerView设置背景图片长宽一样(以GridLayoutManager为例)

使用RecyclerView过程中,由于设置了LayoutManager关系,控件(background)往往不能通过指定长宽为match_parent、wrap_content来实现长宽大小相同...面对问题: 以指定GridLayout(Horizental)布局为例:控件实际宽度受制于一行分割为几列,粗略来说宽度 = RecyclerView宽度 ÷ 由于这个过程是运行时确定,长度预先并不知道宽度的确切值...这就使得我们看到实际效果不是拉成了瘦瘦高高长竹竿,就是压缩成了矮矮胖胖矮冬瓜。 我们当然可以在调试时得到控件宽度,再指定其为logo长度。...我们软件要运行在多种分辨率屏幕下,死板规定长度必然使得在部分机型下长宽失衡。 因此解决这个问题治标治本手段在于根据logo实际宽度来确定长度,令height = width。 怎么求宽度?...根据上面的公式 宽度 = recyclerView宽度 ÷ recyclerView宽度 = gridLayoutManager.getWidth(); = gridLayoutManage.getSpanCount

1.5K10

Android RecyclerView浅析(分类型)

, false)); 参数一:上下文; 参数二:指明行数(Horizontal),或(Vertical); 参数三:指明方向;参数四:是否倒序; 3).瀑布流布局管理器 mRecyclerView.setLayoutManager...,然后根据常量来创建对应ViewHolder(加载自己对应布局文件),然后在根据类型绑定自己对应数据;所以每一中类型都要对应自己ViewHolder,进而实现分类型;一般还有实现其有参构造为了传递初始化相关数据...(this,2);  大家看这个方法里第二个参数,我们是不是指定了2 而我们头是不是返回了2然后显示了一行,没错,就是所占。...也就是我们头占了2 第二个item往后只占一也就是一个item占屏幕一半。...今天给大家简单介绍了一下RecyclerView一般用法分类用法,一般我们开发使用最多也就是这两种了,希望对大家能有所帮助。 Thanks all.

1.1K20

RecycleView之GridLayoutManagerItemDecoration

列表样式出来,但是还要加分隔线啊,到这里,就需要去重写RecyclerView.ItemDecoration,可以定制各种各样分割线。 下面是我们需求需要分割线: ?...上面就是我们需要分割线,我们需求需要是第二种,list.size()%column!=0时,bottomline占满屏幕宽度。这里我顺便把不占满屏幕bottomline也画出来了。...这里mColumn默认为3,大家可以根据需求,来随意设置你需要mColumn值 具体写法: public class RecyclerGridDecoration extends RecyclerView.ItemDecoration...typedArray.getDrawable(0); mTotalCount = totalCount; mColumn = column; } //bottomLine是否占满屏幕...image.setResId(R.drawable.ic_launcher); lists.add(image); } //

3.1K60

曝光埋点方案:recyclerViewitem曝光逻辑实现

列表item曝光逻辑 item曝光:下一次上报item时,看上次上报可见 是否不可见了。...title“more”曝光:根据模块可见就上报可见,模块不可见就上报不可见| 无横(竖)滑模块 子view,根据模块可见性 全部子view都上报相同可见性。...模块标题曝光就是模块曝光 item内元素是 不可滑动/可滑动列表,是不同处理方式。其中元素是不可滑动时处理得比较粗糙,可以再优化下。...如果item内部 是 可滑动recyclerView,那么就item可见时 子列表也做滚定监听就可以了,即内部recyclerView也是用setRecyclerItemExposeListener...建议,调用setRecyclerItemExposeListener给recyclerView设置曝光监听listener直接传adapter,在adapter实现回调方法,然后就可以根据回调position

5.3K10

Android RecyclerView 使用完全解析 体验艺术般控件

但是如果我们有这么个需求,纵屏时候显示为ListView,横屏时候显示两GridView,我们RecyclerView可以轻松搞定,而如果使用ListView去实现还是需要点功夫~~~ 当然了...可以看到,固定为4行,变成了左右滑动。有一点需要注意,如果是横向时候,item宽度需要注意去设置,毕竟横向宽度没有约束了,应为控件可以横向滚动了。...,注意这里 巧妙使用了系统listDivider属性,你可以尝试添加使用dividerdividerHeight属性。...通过简单改变下LayoutManager,就可以产生不同效果,那么我们可以根据手机屏幕宽度去动态设置LayoutManager,屏幕宽度一般,显示为ListView;宽度稍大显示两GridView...或者瀑布流(或者横纵屏幕切换时变化,有点意思~);显示宽度成正比。

1.6K10

RecyclerView addItemDecoration 妙用 - item 间距平均分布添加分割线

可以影响 item 大小,类似于在 item 中设置 padding margin。...实现思路 我们知道 RecyclerView 没有像之前 ListView 提供 divider 属性,设置分割线的话有挺多人在 itemView 布局里面加个 1dp 左右 view,根据业务场景设置是否可见...这是其中一种方法,但其实,我们也可以使用 recyclerView.addItemDecoration() 来实现,主要需要重写 getItemOffsets onDraw 方法 思路很简单 重写...一般来说,可能有以下几种需求: 要求第一最后一距离屏幕距离 A 是固定,其余每个 item 之间距离 B 也是固定(但 A 不等于 B 要求第一最后一距离屏幕距离 A 是固定,item...大小是固定,其余每个 item 之间距离跟随分辨率大小变化 第一行距离顶部距离可以设置,最后一行距离底部距离可以设置 思路分析 首先,我们知道,对于 GridLayoutmanager ,

5.8K41

RecyclerView 使用总结

(-1) 返回值表示是否能向下滚动,false 表示已经滚动到顶部 跨 复杂不规则(有的行显示多,有的行显示少,并且每显示内容页不一样),使用 GridLayoutManager.SpanSizeLookup...相关功能实现,新建 GridLayoutManager 时候填写所有可能最小公倍数。...首先判断 attach RecyclerView 原来是否是一样,一样则返回,不一样则替换 * 2....* 用返回值来检测当前 Item 内容是否发生了变化,根据 UI 需求来改变它返回值 * 如果用 RecyclerView.Adapter 配合 DiffUtil 使用,需要返回...参考: 总结分析几种判断RecyclerView到达底部方法 RecyclerView GridLayoutManager实现复杂变化布局 Android中使用RecyclerView +

3.4K20

Android开发笔记(一百二十二)循环器视图RecyclerView

方法,界面就会根据新布局刷新列表项,这个特性特别适合于手机在竖屏/横屏之间显示切换(如竖屏时展示ListView,横屏时展示GridView),也适合在不同屏幕分辨率如手机/平板之间显示切换(如手机上展示...下面是GridLayoutManager常用方法: 构造函数 : 可指定网格。 setSpanCount : 单独设置网格。...默认一项占一,如果想某项占多,则可在此设置自定义占位规则,即由抽象类GridLayoutManager.SpanSizeLookup派生出具体实现类。...(3); // //以下占位规则意思是:第一项占四,第二第三项各占两 // //如果网格为四,那么第一项将占满第一行,第二第三项平分第二行,第三行开始每行有四项 // mLayoutManager.setSpanSizeLookup...下面是StaggeredGridLayoutManager常用方法: 构造函数 : 可指定网格方向。 setSpanCount : 单独设置网格

2.4K20

自定义RecyclerView打造Android TV桌面

3.添加了条目的点击长按事件。 4.添加了是否第一个可见条目是否是最后一个可见条目的方法。 5.在item获得焦点时失去焦点时,这里有相应回调方法。...2.使用StaggeredGridLayoutManager实现管理,如果使用GridLayoutManager会出现焦点错乱,当使用五向键左右移动时,会从上面转移到下面。...原因是GridLayoutManager会存在分组。 ? 3.设置RecyclerViewitem有焦点。...这里抽象了两个方法,当item获得焦点失去焦点时调用。获得焦点时条目会抬高,这里是抬高了Z轴。 6.获取在第一个最后一个可见条目,根据这些状态去显示隐藏左右箭头。...结束 注意在使用该控件时,要设置RecyclerView宽度是Item整数倍,左右箭头点击滑动距离也要设置为RecyclerView宽度

2.4K20

关于RecyclerView你知道不知道都在这了(下)目录正文

这样好处是,当某一行被移出屏幕时,可以将这一行每个卡位都回收起来,供其他行使用,而不至于每一行每次都是重新创建。...那么,开发者就可以在这些回调方法里自行判断刷新前后 Item 不同信息来决定是否需要进行相对应动画。...用 GridLayoutManager 实现一个四布局,然后让除了四个边 Item 外,内部每个 Item 之间相互间隔 20 dp 空隙。...//实现方式,以水平方向为例: //每个viewleftbottom都设置相同间隙 //去掉第1left,最后一行bottom,也就实现了除四周外内部...会根据设置 Orientation 方向,默认为 VERTICAL 数值方向,以及 RecyclerView 宽高模式来决定是否自动将某一方向空隙平均分配给各 Item,这点需要注意一下。

1.2K30

RecyclerView详解

但是 RecyclerView使用适配器并不是之前 BaseAdapter了。...在Adapter中必须实现三个方法: a、//列表页需要知道有多少个条目publicintgetItemCount() b、//创建一个ViewHolder,我们可以根据viewType不同而创建不同...设置网格布局GridLayoutManager 日常开发经常需要有多行或多形式来展示各个卡位信息,而一些类似于九宫格之类布局也可以用这个实现。只需要修改设置布局管理器即可,还是很nice。...下面以两者都设置为竖直方向多样式来区分: 1、网格样式每一行中所有 item 高度是一致,不同行可以不一样,但同行都是一样,因此它就实现不了瀑布流样式了;瀑布流所有的 item 高度都允许不一样...2、网格样式支持 item 占据多宽度;瀑布流支持 item 占据总宽度,不支持只占据其中几列。 3、当设置为水平方向样式时,以上结论中行列对调,宽度高度对调。

2.9K21

Android 列表形式切换示例代码

电商项目中经常有这样需求:在商品列表页面中,切换列表展现形式,一般分为列表形式表格形式。 如京东: ? ? 本文最终实现效果: ?...RecyclerView GridLayoutManager,列表形式指定为1,表格形式指定为具体值。...默认为列表形式,指定为1: recyclerView = (RecyclerView) findViewById(R.id.recycler_view); // 指定为1 gridLayoutManager...= new GridLayoutManager(this, COLUMN_ONE); recyclerView.setLayoutManager(gridLayoutManager); 列表形式表格形式之间切换...Adapter处理: 定义两种 view 类型:VIEW_TYPE_LIST VIEW_TYPE_GRID 根据不同 view 类型加载相应布局文件,如下: @Override public

83941

Android开发之漫漫长途 XV——RecyclerView

如果说上面的理由只是大而空泛的话,那我们来看以下场景 你想控制数据显示方式,列表显示、网格显示、瀑布流显示等等,之前你需要ListView,GridView自定义View,而现在你可以通过RecyclerView...布局管理器LayoutManager控制 你想要控制Item间间隔(可绘制),想自定义更多样式分割线,之前你可以设置divider,那么现在你可以使用RecyclerViewItemDecoration...RecyclerView还有许多优势,这里就不一一举了,总体来说现在越来越多项目使用RecyclerView,许多老旧项目也渐渐使用RecyclerView来替代ListView。...* * 可以看出,RecyclerView将ListView中getView()功能拆分成了onCreateViewHolder()onBindViewHolder()。...我们这里可以看到HeaderAndFooterWrapper是继承于RecyclerView.Adapter //真正进行数据处理以及展示Adapter mAdapter = new RecyclerViewDemo2Adapter

2.2K20

RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

长点击事件 使用方式 RecyclerView api 虽然没有提供 onItemClickListener 但是提供了 addOnItemTouchListener() 方法,既然可以添加触摸监听...当然你还可以通过给 item 最外层布局设置一个 margin 值,甚至你还可以专门在 item 布局中适当地方添加一个高度/宽度为 1 带背景 View 作为 divider,这两种方法呢,确实有效果...); } private int getSpanCount(RecyclerView parent) { // int spanCount = -...(ItemTouchHelper 使用并不仅仅局限于 RecyclerView 滑动删除,你同意可以用在其他需要拖曳滑动地方。...() 用于设置是否处理拖拽事件滑动事件,以及拖拽滑动操作方向,有以下两种情况: 如果是列表类型 RecyclerView,拖拽只有 UP、DOWN 两个方向 如果是网格类型则有 UP、DOWN

2.9K30

Android使用BaseSectionQuickAdapter动态生成不规则宫格

RecyclerView Adapter,以前一直用原生Adapter,然后最近项目中使用了PagedListAdapter,效果并是不太理想,所以后来又改用BaseQuickAdapter,只能说真香...重构了些,还解决了一些BUG,不过我在刚用时候还没研究明白3.0.4使用,创建有问题,所以改为了2.9.34 01 定义Bean 一共两个类,一个药品简单信息,一个设备对应显示,其中药品类...,这个是用来设置当前格占比,其实从图中可以看到,实现宫格来说,一般一行不会超过6个了,所以为了每行不同能够平均显示,能适配1-6都没有问题,就要求出1-6最小公倍数,其中2,3,5都是质数,...03 MainActivity MainActivity中没有什么特别的,最主要就是计算生成列表。列表计算时主核心就是怎么根据字符串进行数据处理。...= GridLayoutManager(this, colspan) recyclerview.layoutManager = gridLayoutManager recyclerview.adapter

1.3K20

vivo官网APP全机型UI适配方案

pad上面,模块2图片1在左边,图片2、3分布于右侧(3)折叠屏pad上模块2图片,相对于直板手机来说,做了样式调整,上下样式改为了左右。...图片也做了对应放大,保证横向上可以填充整个屏幕宽度。(4)为了形象地表示处理后效果,看下下面的示意图即可。...1)分辨率2)机型3)当前屏幕横、竖状态先说结论: 直板手机:通过分辨率来区分 折叠屏:通过机型内外屏状态来区分 Pad:通过机型当前屏幕横、竖状态来区分所以这里根据这几个特点,提供一个工具。...,以楼层4为例,楼层4每一行商品都是一个RecyclerView,每个RecyclerView使用GridLayoutManager来控制布局展现。...注意:这里2、3数字是UI设计之初就定下来,每行商品都是一个RecyclerView,并且使用GridLayoutManager来控制其,因此这个2、3也是传入到GridLayoutManager

1.6K30
领券