# OptionalSpanSizeRecycleGridView **Repository Path**: vigiles/OptionalSpanSizeRecycleGridView ## Basic Information - **Project Name**: OptionalSpanSizeRecycleGridView - **Description**: 可指定屏幕列数,每个item自适应占几列。可分组的横向流RecyclerView - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 1 - **Created**: 2017-11-12 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: android-modules **Tags**: 瀑布流 ## README ![image](gif.gif) ### 可以 自由指定屏幕宽分为几列,3列、4列? 每个Item根据其自身Bean中的width和height值进行运算得出占用几列,1列、2列、三列? 可以实现分组,只要在Bean中为groupId设置值即可。 看下面的代码,很容易理解。 ### 用法 // 40个假数据 ArrayList mPS = PictureFactory.getPictures(140); // 注意Bean要实现ICVURatioBean接口 Collections.sort(mPS, new PictureCompartor()); // 0.重要!!!先按目标排版排序!!! int columns = 6; // 1.将屏幕分为多少列 CVURatioUtil.ratio(columns, mPS); // 2.对datas进行处理 CVURatioLayoutManager mGridLytManager = new CVURatioLayoutManager(this, columns, mPS); // 3.指定布局管理器 PictureAdapter mAdapter = new PictureAdapter(mPS); // 普通适配器 RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rlv); mRecyclerView.setLayoutManager(mGridLytManager); mRecyclerView.setAdapter(mAdapter); ### 原理 RecyclerView的GridLayoutManager中有个SpanSizeLookup对象,用来控制每个Item占用多少列。 事先计算好每个Item要显示多少列,用时直接取出来即可。