Meh*_*iya 10 android android-jetpack-compose android-jetpack-compose-text material-you material-design-3
目前,我正在将我的一个应用程序迁移到 Material Design 3,该应用程序完全使用 Jetpack Compose 用 Kotlin 编写。
在使用 Material Design 2 时,我可以使用下面的代码更改文本的重点。
CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
Text(
text = "Hello, world",
style = MaterialTheme.typography.h6,
fontWeight = FontWeight.SemiBold,
)
}
Run Code Online (Sandbox Code Playgroud)
但是,相同的代码不适用于 Material Design 3,并且文本具有默认强调。另外,我在Material Design 3中找不到相关功能。我想知道是否有任何官方方法可以达到相同的效果。
Chr*_*acy 10
Compose 中从 Material 2 迁移到 Material 3 中的“重点和内容 alpha ”部分详细介绍了 API 更改。
\n材质2:
\nimport androidx.compose.material.ContentAlpha\nimport androidx.compose.material.LocalContentAlpha\n\n// High emphasis\nCompositionLocalProvider(LocalContentAlpha provides ContentAlpha.high) {\n Icon(\xe2\x80\xa6)\n}\n// Medium emphasis\nCompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {\n Icon(\xe2\x80\xa6)\n}\n// Disabled emphasis\nCompositionLocalProvider(LocalContentAlpha provides ContentAlpha.disabled) {\n Icon(\xe2\x80\xa6)\n}\nRun Code Online (Sandbox Code Playgroud)\n材质3:
\nimport androidx.compose.material3.LocalContentColor\n\n// High emphasis\nCompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onSurface) {\n Icon(\xe2\x80\xa6)\n}\n// Medium emphasis\nCompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onSurfaceVariant) {\n Icon(\xe2\x80\xa6)\n}\n// Disabled emphasis\nCompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f)) {\n Icon(\xe2\x80\xa6)\n}\nRun Code Online (Sandbox Code Playgroud)\n
MaterialTheme.typography.h6来自材质 2,这意味着您也在使用Text材质 2 中的可组合项。
材料 3 的类似物h6是MaterialTheme.typography.headlineSmall。
确保您正确导入了Text和MaterialTheme- 这些应该从androidx.compose.material3包中导入。另请确保您提供正确导入的主题,例如此处。
错误的导入是迁移到 M3 时最常见的错误,因此请耐心等待。
另请注意,LocalContentAlphaM3 中不存在此功能,提供 M2 版本不会对 M3 视图产生影响。您可以比较可组合性如何确定M2和M3Text中的颜色。
我不确定它是否会在以后添加(毕竟它是 alpha),或者它在 M3 中以其他方式处理,这里有一个解决方法(这肯定不是完美的):
CompositionLocalProvider(LocalContentColor provides LocalContentColor.current.copy(alpha = 0.4f)) {
Run Code Online (Sandbox Code Playgroud)
psLocalContentColor也需要从M3导入
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |