您好,欢迎来到源码搜藏!分享精神,快乐你我!提示:担心找不到本站?在百度搜索“源码搜藏”,网址永远不丢失!
  • 首 页
  • 在线工具
  • Android中RecyclerView的自定义布局管理器模仿TextView跨行为,

    时间:2017-01-22 10:08 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

    RecyclerView的ChipsLayoutManager。 RecyclerView的自定义布局管理器

    这是ChipsLayoutManager - 自定义Recycler View的LayoutManager,当当前没有剩余空间时,将项目移动到下一行

    这种布局管理器可以代表谷歌的芯片材料的设计模式

    作为一个android开发人员,我看到google不是很有礼貌支持我们的所有愿望,当我面对这样的常见任务,如创建spannable列表,但与CRUD动画的支持,我决定做这样的东西,并分享它。

    芯片布局管理器gif与滚动

    设置和使用

    安装 下载

    与gradle

    
    	
    compile 'com.beloo.widget:ChipsLayoutManager:0.3.7@aar'

    假设您已安装jCenter提供程序:

    
    	
    allprojects {
        repositories {
            jcenter()
        }
    }

    或者只是导入ChipsLayoutManager模块项目。

    特征

    布局管理器代表的芯片或列表项跨区或“泡沫”的结构,是一个很好的替换根据跨度等问题的典型实现TextView 或自定义FlowLayout秒。

    • 支持RecyclerView的/ LayoutManager的功能,例如默认的动画,同时CRUD物品及定制ItemAnimatorS,ItemDecorator为s,滚动等wrap_content的高度支持
    • 支持垂直滚动。不支持水平滚动。也可以禁用垂直滚动。支持的填充/边距,clipToPadding参数RecyclerView
    • 支持不同的高度和宽度的项目
    • 回收项目的支持(在另一个好处TextView的方法)
    • 项目重力内支持。对于所有项目或只有必需的
    • LTR和RTL支持
    • 活动导向变化支持
    • 支持预测动画(动画视图移动在可见边界之外)
    • 设置行中的最大视图数
    • 你可以根据你的条件打破行
    • 对齐的视图,带有空格或其他视图大小
    插入/删除 移动
    使用ChipsLayoutManager插入/删除动画 使用ChipsLayoutManager移动动画

    布局方向

     

     

      左到右 右到左
    水平 从左到右执行ChipsLayoutManager的行 从右到左执行ChipsLayoutManager
    垂直 从左到右列ChipsLayoutManager的实现  

     

     

    填充策略

    任何行都有一些空间,其中不可能放置下一个视图,因为该空间太小。但是我们可以分配该行的可用视图的空间。

    行策略是一种分布左空间的模式。

    • STRATEGY_DEFAULT - 默认使用。左空格放置在行的末尾。
    • STRATEGY_FILL_VIEW - 可用空间分布在视图中。
    • STRATEGY_FILL_SPACE - 可用空间分布在视图之间的空间中,开始和结束视图停靠到最近的边界。
    • STRATEGY_CENTER - 可用空间分布在视图之间的空间中,包括开始和结束空间。视图位于画布的中心。
    • STRATEGY_CENTER_DENSE - 视图放在画布的中心。视图之间没有额外的空间分布。

    在这种布局中,默认最后一行不认为已完成。所以策略不适用于最后一行。但是你也可以启用相反的行为。

    用法

    
    	
    ChipsLayoutManager chipsLayoutManager = ChipsLayoutManager.newBuilder()
            //set vertical gravity for all items in a row. Default = Gravity.CENTER_VERTICAL
            .setChildGravity(Gravity.TOP)
            //whether RecyclerView can scroll. TRUE by default
            .setScrollingEnabled(true)
            //set maximum views count in a particular row
            .setMaxViewsInRow(2)
            //set gravity resolver where you can determine gravity for item in position. 
            //This method have priority over previous one
            .setGravityResolver(new IChildGravityResolver() {
                @Override
                public int getItemGravity(int position) {
                    return Gravity.CENTER;
                }
            })
            //you are able to break row due to your conditions. Row breaker should return true for that views
            .setRowBreaker(new IRowBreaker() {
                @Override
                public boolean isItemBreakRow(@IntRange(from = 0) int position) {
                    return position == 6 || position == 11 || position == 2;
                }
            })
            //a layoutOrientation of layout manager, could be VERTICAL OR HORIZONTAL. HORIZONTAL by default
            .setOrientation(ChipsLayoutManager.HORIZONTAL)
            // row strategy for views in completed row, could be STRATEGY_DEFAULT, STRATEGY_FILL_VIEW, 
            //STRATEGY_FILL_SPACE or STRATEGY_CENTER
            .setRowStrategy(ChipsLayoutManager.STRATEGY_FILL_SPACE)
            // whether strategy is applied to last row. FALSE by default
            .withLastRow(true)
            .build();
    rv.setLayoutManager(chipsLayoutManager);

    请注意,如果您在运行时更改了重力解算器或行断路器条件,则不会影响已耗尽的项目和缓存的项目位置。你必须调用notifyItemChangedChipsLayoutManager,否则布局将是不可预测的。

    器件电流方向已经默认选择。你可以用布局方向(操纵LTRRTL
    在API> = 17:

    
    	
    <android.support.v7.widget.RecyclerView
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layoutDirection="rtl"
           />

    或编程(在所有支持的API: ):

    
    	
    ViewCompat.setLayoutDirection(recyclerView, ViewCompat.LAYOUT_DIRECTION_RTL);

    例如,查看示例应用程序。 

    Android中RecyclerView的自定义布局管理器模仿TextView跨行为,转载请注明出处http://www.codesocang.com/kj/listview/34343.html 源码搜藏网所有源码来自用户上传分享,版权问题及牵扯到商业纠纷均与源码搜藏网无关
    标签: