gpt4 book ai didi

android - 什么时候应该使用 Android Jetpack Compose Surface 可组合?

转载 作者:行者123 更新时间:2023-12-03 20:23:35 25 4
gpt4 key购买 nike

Surface在 Jetpack Compose 中可组合,代表 material surface .表面允许您设置背景颜色或边框等内容,但似乎可以使用 modifiers 完成相同的操作。 .我应该什么时候使用 Surface 可组合产品,它给我带来了什么好处?

最佳答案

Surface可组合使代码更容易,并明确指出代码使用 material surface .让我们看一个例子:

Surface(
color = MaterialTheme.colors.primarySurface,
border = BorderStroke(1.dp, MaterialTheme.colors.secondary),
shape = RoundedCornerShape(8.dp),
elevation = 8.dp
) {
Text(
text = "example",
modifier = Modifier.padding(8.dp)
)
}
结果:
enter image description here
不用 Surface 也能得到同样的结果:
val shape = RoundedCornerShape(8.dp)
val shadowElevationPx = with(LocalDensity.current) { 2.dp.toPx() }
val backgroundColor = MaterialTheme.colors.primarySurface

Text(
text = "example",
color = contentColorFor(backgroundColor),
modifier = Modifier
.graphicsLayer(shape = shape, shadowElevation = shadowElevationPx)
.background(backgroundColor, shape)
.border(1.dp, MaterialTheme.colors.secondary, shape)
.padding(8.dp)
)
但它有一些缺点:
  • 修改器链非常大,它实现 Material 表面并不明显
  • 我必须为形状声明一个变量并将其传递给三个不同的修饰符
  • 它使用 contentColorFor找出内容颜色,而 Surface 在引擎盖下进行。因此,backgroundColor也用于两个地方。
  • 我必须以像素为单位计算高程
  • Surface调整高度的颜色(在深色主题的情况下)according to the material design .如果您想要相同的行为,则应手动处理。

  • 有关 Surface 功能的完整列表,最好查看 documentation .

    关于android - 什么时候应该使用 Android Jetpack Compose Surface 可组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65918835/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com