网上找了好多流式布局的LayoutManager,目前发现这个是最好的,现在将使用方法记录一下,免得下次忘记。
作者github地址
使用方法
1、添加依赖
allprojects {
repositories {
jcenter()
}
}
dependencies {
implementation 'com.beloo.widget:ChipsLayoutManager:0.3.7@aar'
}
2、创建ChipsLayoutManager
ChipsLayoutManager chipsLayoutManager = ChipsLayoutManager.newBuilder(this)
//为一行中的所有项目设置垂直重力。 Default = Gravity.CENTER_VERTICAL
.setChildGravity(Gravity.CENTER_VERTICAL)
//是否可以滚动. TRUE by default
.setScrollingEnabled(true)
//在特定行中设置最大视图计数
.setMaxViewsInRow(10)
//设置重力解算器,在这里你可以确定物体的重力位置。这个方法比前一个方法有优先权
.setGravityResolver(new IChildGravityResolver() {
@Override
public int getItemGravity(int position) {
return Gravity.RIGHT;
}
})
//由于您的条件,您可以中断行。对于那个视图,行断路器应该返回true
.setRowBreaker(new IRowBreaker() {
@Override
public boolean isItemBreakRow(@IntRange(from = 0) int position) {
//意思是在 position == 3 或 position == 7的时候,
// 该行结束,直接换到下一行,可以理解为回车
return position == 3 || position == 7;
}
})
//布局管理器的layoutOrientation,可以是垂直的,也可以是水平的。在默认情况下水平
.setOrientation(ChipsLayoutManager.HORIZONTAL)
// 对于已完成行中的视图的行策略可以是
//STRATEGY_DEFAULT 左对齐,右边置空
//STRATEGY_FILL_VIEW 填满整个RecyclerView剩余控件
//STRATEGY_FILL_SPACE 两边对齐,中间置空
//STRATEGY_CENTER //中间对齐,两边置空
.setRowStrategy(ChipsLayoutManager.STRATEGY_DEFAULT)
// 是否对最后一行应用策略。默认false
.withLastRow(false)
.build();
别的还好理解,重力解析器这块没看出来效果,所以没有具体备注。
//其实默认设置以及够用了
ChipsLayoutManager.newBuilder(this).build()
3、为RecyclerView设置LayoutManager
mBinding.rvAllTag.setLayoutManager(chipsLayoutManager);
android:layout_height="wrap_content"
网友评论