我试图重叠两个Box
,或者在这种情况下使用Row
更好。
我的设计是一个Row
与另一个重叠,我把它 Package 在一个Column
上,对吗?
这是设计,我想有什么是顶部的矩形是下面的一个相同的大小,然后移动它一些像素,你可以在图像中看到,但他们应该有相同的宽度,但不相同的高度。
如果层次结构是:
Column
Box (the one of the top)
Row
Box (the one of the bottom)
Row (inside there is text and it's all the same align)
......
6条答案
按热度按时间w1jd8yoj1#
几天前我遇到了这个问题,我用
ConstraintLayout
解决了它。我要做的是:
1.将
implementation "androidx.constraintlayout:constraintlayout-compose:1.0.0-beta02"
添加到build.gradle
1.将每个
Box
Package 在ConstraintLayout { .. }
中1.在每个
Box
内添加Modifier.constrainAs
,以根据需要对齐Top
Bottom
Start
End
。1.如果你想让第一个盒子和第二个盒子的
width
相同,而不硬编码dps
,你应该使用width = Dimension.fillToConstraints
。fillToConstraints -布局将扩展以填充由其约束在该维中定义的空间。
没有硬编码的基本示例:
现在你必须根据你的UI来使用
padding
并适应它,结果是这样的:o0lyfsai2#
这是使用BoxWithConstraints的方式,而不是使用固定的宽度和高度:
3zwjbxry3#
为了使
Composables
重叠,您应该将它们放在同一个Box
中。试试这个:lo8azlld4#
你可以用很多方法来实现这一点,
1hdlvixo5#
我认为你必须使用“matchParentSize”修饰符,它在BoxScope中是可用的,我的意思是在Box composable中,当它第一次加入composable以将相同的大小应用于自己时,修饰符测量除自己之外的其他子大小。
您可以在文档https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/BoxScope#(androidx. composite.ui.Modifier)中看到此修饰符。matchParentSize()
igsr9ssn6#
要让两个盒子或任何其他组合以这种方式重叠,您可以使用
spacedBy
方法进行排列,无论是在Row
还是Column
上,并传递负值。Android docs也支持此功能。举例来说:
将产生: