如何更改Android Jetpack Compose中布局子项的绘图顺序?

如何更改Android Jetpack Compose中布局子项的绘图顺序?,android,android-jetpack,android-jetpack-compose,Android,Android Jetpack,Android Jetpack Compose,默认情况下,在Jetpack Compose中,布局子级渲染顺序与代码中子级的顺序匹配。在以下示例中,船舶(文本)将绘制在水面上(方框) @Composable 有趣的DrawingOrderExample(submarineMode:Boolean){ 框(contentAlignment=Alignment.Center){ 盒子( 修饰语=修饰语 .尺寸(32.dp) .background(彩色.青色.拷贝(alpha=.5f)) ) 文本(“⛵") } } 我可以根据submarin

默认情况下,在Jetpack Compose中,布局子级渲染顺序与代码中子级的顺序匹配。在以下示例中,船舶(文本)将绘制在水面上(方框)

@Composable
有趣的DrawingOrderExample(submarineMode:Boolean){
框(contentAlignment=Alignment.Center){
盒子(
修饰语=修饰语
.尺寸(32.dp)
.background(彩色.青色.拷贝(alpha=.5f))
)
文本(“⛵")
}
}
我可以根据
submarineMode
参数强制在水下绘制船舶吗?

您可以使用修改器更改子级绘制顺序:

。。。
导入androidx.compose.ui.zIndex
盒子{
文本(“第二次绘制”,修饰符.zIndex(1f))
文本(“先绘制”)
}
船舶示例:

@Composable
有趣的DrawingOrderExample(submarineMode:Boolean){
框(contentAlignment=Alignment.Center){
盒子(
修饰语=修饰语
.尺寸(32.dp)
.background(彩色.青色.拷贝(alpha=.5f))
)
val shipZIndex=if(潜艇模式)-1f其他1f
正文(
文本=”⛵",

modifier=modifier.zIndex(shipZIndex)//只需在if语句中包装该框,并为if和else块分别创建两个框。这没有什么害处

我真的很喜欢这条船的答案