首页

源码搜藏网

首页 > 安卓源码 > 控件分类 > 列表ListView >

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

创建时间:2017-01-22 10:08  

Android中RecyclerView的自定义布局管理器模仿TextView跨行为,
Android中RecyclerView的自定义布局管理器模仿TextView跨行为,
暂无演示 立即下载

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秒。

插入/删除 移动
使用ChipsLayoutManager插入/删除动画 使用ChipsLayoutManager移动动画

布局方向

 

 

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

 

 

填充策略

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

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

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

用法


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

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

上一篇:支持多个方向滑动的 View,类似 Calendar 里的 UI 效果
下一篇:Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗

相关内容

热门推荐