Android中RecyclerView的自定义布局管理器模仿TextView跨行为,

时间:2017-01-22 10:08 来源:互联网 作者:源码搜藏收藏

  • 源码类别:列表ListView
  • 源码大小:未知
  • 编码格式:gbk,utf8,不限
  • 运行环境:Android studio
  • 广告推荐

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);

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

本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

列表ListView下载排行

最新文章