在Compose中添加高程和阴影的正确方式是使用Surface
作为其他内容的容器。
来自Surface
文档
材料表面是材料设计中的中心隐喻。每个表面存在于特定的高程,这影响了该表面与其他表面的视觉关系以及该表面如何被色调变化所改变。
因此,要向选项卡布局添加阴影,您可以像这样操作
Surface(
shadowElevation = 9.dp, // play with the elevation values
) {
Column {
TabRow(...) // your current TabRow content
}
}
如果上述方法不能提供所需的阴影效果(我需要更强的阴影),而且由于你已经有一个矩形形状,你可以改用线性渐变。
编写一个@Composable
函数来制作“阴影”
@Composable
fun BottomShadow(alpha: Float = 0.1f, height: Dp = 8.dp) {
Box(modifier = Modifier
.fillMaxWidth()
.height(height)
.background(
brush = Brush.verticalGradient(
colors = listOf(
Color.Black.copy(alpha = alpha),
Color.Transparent,
)
)
)
)
}
然后在您现有的Compose布局中使用它
Column {
TabRow(...) // your current TabRow content
BottomShadow(alpha = .15f, height = 8.dp) // use higher alpha for a stronger shadow
}
您可以在TabRow上使用修饰符shadow
。此外,添加zIndex
以使阴影绘制在选项卡内容的顶部。
例如,要添加默认的顶部应用栏高度,您可以执行以下操作:
TabRow(
modifier = modifier
.shadow(AppBarDefaults.TopAppBarElevation)
.zIndex(1f),
...
)
AppBar
? - IgorGanapolsky