我试图使用FlexboxLayoutManager来布局方形形状的项目。但是,最后一行只有两个项,使它们对齐。这让事情看起来非常糟糕。我的密码在下面。有办法解决这个问题吗?
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(activity);
layoutManager.setFlexDirection(FlexDirection.ROW);
layoutManager.setJustifyContent(JustifyContent.SPACE_BETWEEN);
发布于 2022-03-16 12:22:03
这很脏,但很管用。将FlexLayout
放置在FramLayout
中,但不要忘记将布局参数设置为WRAP_CONTENT,中心位于水平轴上。
flexbox=new FlexboxLayout(context);
flexbox.setFlexDirection(FlexDirection.ROW);
flexbox.setFlexWrap(FlexWrap.WRAP);
flexbox.setJustifyContent(JustifyContent.FLEX_START);
FrameLayout container=new FrameLayout(context);
LayoutParams lp=new LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
lp.gravity= Gravity.CENTER_HORIZONTAL;
container.addView(flexbox,lp);
发布于 2022-09-08 17:36:47
正确的方法是将justifyContent
设置为SPACE_BETWEEN
。这将在一行中容纳同样多的项目,在两行之间留下相同宽度的空空间(从而对项目进行居中)。最后一行的“勒死人”将左对齐。
Kotlin
val layoutManager = FlexboxLayoutManager(context).apply {
justifyContent = JustifyContent.SPACE_BETWEEN
}
Java
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(context);
layoutManager.setJustifyContent(JustifyContent.SPACE_BETWEEN);
您可能需要调整recyclerView的左、右填充,因为不计算最左和最右的空格(第一个和最后一个视图将触及父视图的边界)。
https://stackoverflow.com/questions/66325405
复制相似问题