
这种布局管理器可以代表谷歌的芯片材料的设计模式
作为一个android开发人员,我看到google不是很有礼貌支持我们的所有愿望,当我面对这样的常见任务,如创建spannable列表,但与CRUD动画的支持,我决定做这样的东西,并分享它。

与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的高度支持RecyclerViewTextView的方法)| 插入/删除 | 移动 |
|---|---|
![]() |
![]() |
| 左到右 | 右到左 | |
|---|---|---|
| 水平 |
![]() |
![]() |
| 垂直 |
![]() |
任何行都有一些空间,其中不可能放置下一个视图,因为该空间太小。但是我们可以分配该行的可用视图的空间。
行策略是一种分布左空间的模式。
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);
请注意,如果您在运行时更改了重力解算器或行断路器条件,则不会影响已耗尽的项目和缓存的项目位置。你必须调用notifyItemChanged上ChipsLayoutManager,否则布局将是不可预测的。
器件电流方向已经默认选择。你可以用布局方向(操纵LTR或RTL)
在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基于FlatList的上拉、下拉刷新组件
Android打造万能的ListView和GridView适配器
Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗
Android中RecyclerView的自定义布局管理器模仿TextView跨行为,
支持多个方向滑动的 View,类似 Calendar 里的 UI 效果
一个下拉刷新上拉加载更多的Android框架
用于在RecyclerView和AbsListView上创建简单分页功能的库
TwinklingRefreshLayout 小而强大的刷新控件,自带顺滑的越界回
Android具有闪烁视图的自定义回收器视图,用于指示视图正在加载
一个Android的二维RecyclerView。不仅可以加载历史数据,而且可
Android滚轮控件
使用ExpandableListView实现的购物车
Android基于FlatList的上拉、下拉刷新组件
Android打造万能的ListView和GridView适配器
Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗
一个下拉刷新上拉加载更多的Android框架
用于在RecyclerView和AbsListView上创建简单分页功能的库
Android具有闪烁视图的自定义回收器视图,用于指示视图正在加载
热门源码