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

如果recyclerview的列表大小为奇数,则将第一项居中(GridLayoutManager)

RecyclerView是Android开发中常用的列表控件,用于展示大量数据并支持滚动。GridLayoutManager是RecyclerView的一种布局管理器,可以将列表以网格的形式展示。

如果RecyclerView的列表大小为奇数,并且使用GridLayoutManager布局管理器,可以通过设置SpanSizeLookup来实现将第一项居中显示。SpanSizeLookup是GridLayoutManager的一个内部类,用于设置每个列表项的跨度大小。

以下是实现将第一项居中的步骤:

  1. 创建GridLayoutManager对象,并设置列数为奇数,例如3列。
代码语言:txt
复制
GridLayoutManager layoutManager = new GridLayoutManager(context, 3);
  1. 创建SpanSizeLookup对象,并重写getSpanSize方法,设置第一项的跨度大小为列数的倍数,其他项的跨度大小为1。
代码语言:txt
复制
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        return position == 0 ? layoutManager.getSpanCount() : 1;
    }
});
  1. 将GridLayoutManager设置给RecyclerView。
代码语言:txt
复制
recyclerView.setLayoutManager(layoutManager);

通过以上步骤,当RecyclerView的列表大小为奇数时,第一项会居中显示,其他项会按照正常的网格布局显示。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb),该产品提供了音视频直播的解决方案,可用于实时直播、互动直播等场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RecyclerView】 十四、GridLayoutManager 网格布局管理器 ( GridLayoutManager.SpanSizeLookup 指定 item 元素占用网格个数 )

文章目录 一、修改单条数据 二、完整代码示例 三、总体运行效果 四、RecyclerView 相关资料 一、修改单条数据 ---- GridLayoutManager.SpanSizeLookup 主要作用是设置每个...item 元素占据网格布局格子数量 ; 默认每个 item 元素占 1 个格子 ; GridLayoutManager.SpanSizeLookup 使用流程 : ① 自定义类 : 自定义 GridLayoutManager.SpanSizeLookup...; ④ 刷新 UI : 调用 RecyclerView.Adapter notifyDataSetChanged 方法即可刷新 UI ; 设置效果一 : 第一个元素占 4 个格子 , 第二个元素占...RecyclerView 列表 */ private RecyclerView recycler_view; /** * 网格布局管理器 */ private...相关资料 ---- 官方文档 : 使用 RecyclerView 创建动态列表 : https://developer.android.google.cn/guide/topics/ui/layout

1.3K00

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

下面是LinearLayoutManager常用方法: 构造函数 : 可指定列表方向与是否相反方向开始布局。 setOrientation : 单独设置列表方向。...setReverseLayout : 单独设置是否相反方向开始布局。默认false,如果设置true,那么垂直方向将从下往上开始布局,水平方向将从右往左开始布局。...默认一项占一列,如果想某项占多列,则可在此设置自定义占位规则,即由抽象类GridLayoutManager.SpanSizeLookup派生出具体实现类。...(3); // //以下占位规则意思是:第一项占四列,第二列和第三项各占两列 // //如果网格列数四,那么第一项将占满第一行,第二列和第三项平分第二行,第三行开始每行有四项 // mLayoutManager.setSpanSizeLookup...setReverseLayout : 设置是否相反方向开始布局。默认false,如果设置true,那么垂直方向将从下往上开始布局,水平方向将从右往左开始布局。

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

    移出屏幕 ViewHolder 会被缓存到两个容器中,按优先级高到低分别是:mCachedViews 和 mRecyclerPool 该方法就是用于设置 mCachedViews 容器大小,默认值...2,可通过该方法随时改变缓存容器大小。...应用场景: 我们来举个例子,就不用官方给例子了,我额外补充一种场景:界面上存在多行可分别左右滑动列表控件,即每行是一个 RecyclerView,每行里 Item 布局样式一致,这时候就可以让每一行...时,只有一个方向会生效,那么下面我们就以 GridLayoutManager 例,来看看,如何自定义写 ItemDecoration。...但其实,滑动策略也是支持多样化。 比如,如果想要实现不管以多大加速度滑动,滑多长距离,最终停下来时都系统有个 ItemView 是居中显示效果。

    1.3K30

    Android:流式布局实现总结

    RecyclerView+GridLayoutManager+Span 3实现方式分析 (1)、自定义FlowLayout 关于自定义FlowLayout,原理就是自定义一个ViewGroup,向里动态添加条目...官方为我们封装好一套流式标签组件.ChipGroup 本质上也是自定义ViewGroup,其中我们封装了部分条目点击和选中监听器。...所以,在这中方式下,如果我们想要实现超过宽度或者高度就主动换行效果就做不到了。...假设我们要实现一个宽度满屏之后自动换行流式标签列表,我们将span总数设置屏幕宽度,那么,每一个条目所占span即为该条目的宽度(含marign、padding). .../10 9:22 AM 配置字体大小,大小需要与条目xml中配置一致        textPaint.textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP

    4.4K20

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

    数据分析同事对这些曝光数据分析,可用于针对用户进行商品喜好推荐。 那如何实现 列表recyclerView)中item曝光埋点呢?...有横(竖)滑模块 子view:若模块可见,就上报 当前子列表可见子模块 ;同时处理子列表滑动时item可见性;模块不可见,那当前子列表可见view上报不可见。...item上报可见时,如果已经之前上报可见了,就不上报;上报不可见时,如果上次上报了可见,才上报。 模块标题曝光就是模块曝光 item内元素是 不可滑动/可滑动列表,是不同处理方式。...如果item内部 是 可滑动recyclerView,那么就item可见时 子列表也做滚定监听就可以了,即内部recyclerView也是用setRecyclerItemExposeListener...item可见状态监听 * @param recyclerView recyclerView * @param onExposeListener 列表item可见性回调

    5.5K10

    RecyclerView通过GridLayoutManager实现多样式布局示例

    TagLayout去实现,但是尝试了一下后发现其实他们实现效果同项目要效果还是有蛮大差距,可以看到效果图里边是要求文字是居中对齐,左右对称。...下边就重点介绍一下使用recyclerview实现如图效果。...三、功能实现 我们知道recyclerview实现GridView效果只需配置一下参数就行了 GridLayoutManager layoutManage = new GridLayoutManager...因为recyclerview填充数据是根据adapter实现,我们就把给adapter数据源同样在setSpanSizeLookup这个方法里边判断一下不就行了吗?...根据这个思路于是有了下面的代码 /** * 如果单个item显示字数大于指定某个值就显示一列 默认2列 */ //设置item数据大于多少字只显示一行 默认 超过九个字程度只显示一列

    1.8K10

    RecyclerView】 八、RecyclerView.ItemDecoration 条目装饰 ( onDraw 和 onDrawOver 绘制要点 )

    和 onDrawOver 绘制要点 ---- onDraw 和 onDrawOver 方法原理类似 , 都是基于 Canvas 进行绘制 , 这个 Canvas 画布大小RecyclerView...大小相同 , 这里要注意 , 每一次绘制时 , 都要先获取要绘制 item 组件对应坐标 ; 这里用法与 getItemOffsets 完全不同 , 设置每个元素边距偏移时 , 可以获取当前序号...对象相对于父容器 RecyclerView 坐标值 , 也就是左上右下四个坐标 ; ⑤ 根据获取坐标值进行绘图 ; 绘图代码示例 : 以 onDraw 方法例 , onDrawOver 绘图逻辑类似..., 奇数序号元素上绘制红色矩形遮罩 ; 该方法中绘制元素覆盖 item 组件元素 ; 四、完整代码示例 ---- RecyclerView.ItemDecoration 代码示例 : package...; 五、RecyclerView 相关资料 ---- 官方文档 : 使用 RecyclerView 创建动态列表 : https://developer.android.google.cn/guide

    1.4K00

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

    setSpanSizeLookup() 通常情况下,网格布局样式下,每个小格大小基本都是一样,但如果我们想实现如下效果呢: ?..., false); //自定义item占据小格大小时需要重写 getSpanSize(),返回值就是占据小格数量 gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup...就以上上图布局例,来看下打出来日志: ? 日志.png 得到结果是个数组,数组大小就是构造方法中传入 spanCount。...我想了想,还是想不出比较合理解释,大概硬套了下,感觉也许是因为瀑布流布局下是没办法确定 item 大小如果还像 LinearLayoutManager 只寻找首个或末个完全可见 item 时...如果模式 wrap_content,那这个方法就不要用了。

    3.1K60

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

    如果说上面的理由只是大而空泛的话,那我们来看以下场景 你想控制数据显示方式,列表显示、网格显示、瀑布流显示等等,之前你需要ListView,GridView和自定义View,而现在你可以通过RecyclerView...注:当我们想要一个列表显示控件时候,需要支持动画,或者频繁更新,局部刷新,建议使用RecyclerView,更加强大完善,易扩展;其他情况下ListView在使用上反而更加方便,快捷。...RecyclerView继承了ViewGroup,并重写了measureChild(),该方法在onMeasure()中被调用,用来计算每个child大小,计算每个child大小时候就需要加上getItemOffsets...= null) {//如果以viewTypekey获取Viewnull //创建ViewHolder并返回 ViewHolder...= null) {//如果以viewTypekey获取Viewnull //创建ViewHolder并返回 ViewHolder holder = new

    2.2K20

    实现一个带有header和footer功能RecyclerView

    如果是正常item,直接调用外部adapter对应方法;如果是header和footer,在对应标识上要减去该header或footer在对应list中位置,下面就会解释这样做原因。...设置LayoutManager是GridLayoutManager时,其设置SpanSizeLookup,并通过position判断如果是header或footer返回SpanCount(这个count...在列表中我们经常会用到divider,RecyclerView并不像ListView那样可以很简单添加divider,需要用户自定义一个ItemDecoration。...通过上面的处理,header和footer功能基本完善了,如果遇到其他问题,可以参照上面两种情况进行处理。 下拉刷新 最后我们再为这个RecyclerView实现下拉刷新和加载更多功能。...,判断是否已经到列表顶部或底部,如果到顶部或底部就会执行下拉/上拉操作了。

    1.7K20

    RecyclerView添加下拉刷新功能

    前言 在之前文章中,我们实现了带有header和footer功能WrapRecyclerView:实现一个带有header和footer功能RecyclerView 现今App中列表下拉刷新和上拉加载已经是一种习惯了...RecyclerView添加这个功能可以通过多种方法,这里我选用了一种简单做法。基于pulltorefresh这个库。...,判断是否已经到列表顶部或底部,如果到顶部或底部就会执行下拉/上拉操作了。...); return recyclerView; } 这个方法就是创建一个WrapRecyclerView,注意不要忘了setId,否则在Fragment中使用会出现一些问题(回收重建时候...实现效果如下 如果想改变显示或风格,可以通过pulltorefresh库api来实现,关于pulltorefresh库使用大家可以自行查阅相关文档。

    86250

    Android实战RecyclerView头部尾部添加方法示例

    但是作为官方推荐ListView升级版RecyclerView缺无法实现这两个方法。 那么如果使用RecyclerView实现这两个方法效果该怎么做呢?...上面代码看起来挺眼熟吧~ 二、对比RecyclerView,google进行优化 在RecyclerView依赖适配器中,无论是适配器还是ViewHolder,从源码我们可以看出,都存在RecyclerView...也没有像ListView列表点击监听方法(setItemOnclickListener),这里我也不明白为什么官方会取消了这些独有的属性,不过我们依然可以在onBindViewHolder方法中进行事件绑定...我们可以通过在onCreateViewHolder创建视图时候,对viewType进行判断,如果添加了头部,在position = 0时候回调头部viewType给onCreateViewHolder...笔者在添加头部尾部时候,发现在配置RecyclerView如果模式是配置GridLayoutManager时候,发现头部会跑到第一格,也就是不是自己想要独立一行效果,这里贴上关键代码,可以解决

    77930

    RecyclerView实现拖拽排序和侧滑删除

    在平时开发应用时候,经常会遇到列表排序、滑动删除需求。...如果列表效果采用是 ListView 的话,需要经过自定义 View 才能实现效果;但是如果采用RecyclerView 的话,系统 API 就已经我们提供了相应功能。...GridLayoutManager ,那么拖拽排序就可以细分为上下左右四个方向了,而且 GridLayoutManager 没有侧滑删除功能; 若是其他 LayoutManager ,比如说 LinearLayoutManager...,那么拖拽排序就只有上下两个方向了,并且设置 swipeFlag ItemTouchHelper.END 类型; 对于其他自定义类型 LayoutManager 可以自己根据自身情况补充。...所以关于列表排序代码应该写在这里。方法参数中 viewHolder 代表是用户当前拖拽 item ,而 target 代表是被用户拖拽所覆盖那个 item 。

    97930

    解决Scrollview 嵌套recyclerview不能显示,高度不正常问题

    我们先看一个效果,问题说就是中间Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好,不过在5,1,1版本(api 22)缺出现了问题 最近项目中...以前在ScrollView中嵌套嵌套ListView,无法正确计算ListView大小,现在我们在ScrollView中嵌套嵌套RecycleView时候,也出现了计算不出高度问题,于是有人想到我们是不是可以自己实现一个重写一个继承自...RecycleView类,重写OmMeasure,呵呵,但是实际上这是不行,RecycleView是具体一个控件,不相同与我们ListView,这里参照之前网上解决方案,我们可以继承自GridManager...,然后对OnMeasure重写,其他列表效果如此, public class WrappingGridLayoutManager extends GridLayoutManager {...instanceof GridLayoutManager) { spanCount = ((GridLayoutManager) layoutManager).getSpanCount

    3.3K50

    Android RecyclerView浅析(分类型)

    ItemDecoration 我们可以通过该方法添加分割线: mRecyclerView.addItemDecoration() 该方法参数RecyclerView.ItemDecoration,该类抽象类...,官方目前并没有提供默认实现类(我觉得最好能提供几个) 提示:如果布局管理器里面设置Horizontal就是行,如果是Vertical就是显示几列。...,参数三:是否倒序排列; 2).网格布局管理器: mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4, GridLayoutManager.VERTICAL...,然后设置Adapter泛型当前ViewHolder,如果有不一样就要重写其方法 关于其几个方法说明: class MyAdapter extends RecyclerView.Adapter...如果rootnull,attachToRoot将失去作用,设置任何值都没有意义。 2.

    1.1K20
    领券