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

Android:流式布局实现总结

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

5.2K20

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

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

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

    Android RecyclerView浅析(分类型)

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

    1.1K20

    RecycleView之GridLayoutManager的ItemDecoration

    列表样式出来,但是还要加分隔线啊,到这里,就需要去重写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.2K70

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

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

    1.6K10

    曝光埋点方案:recyclerView中的item曝光逻辑实现

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

    5.8K10

    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 ,

    6.9K41

    RecyclerView 使用总结

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

    3.5K20

    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.设置RecyclerView的item有焦点。...这里抽象了两个方法,当item获得焦点和失去焦点时调用。获得焦点时条目会抬高,这里是抬高了Z轴。 6.获取在第一个和最后一个可见的条目,根据这些状态去显示和隐藏左右箭头。...结束 注意在使用该控件时,要设置RecyclerView的宽度是Item的整数倍,左右箭头点击滑动的距离也要设置为RecyclerView宽度。

    2.6K20

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

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

    1.3K30

    RecyclerView详解

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

    3K21

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

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

    2.3K20

    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

    3.2K30

    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.6K20

    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
    领券