Android Studio合成材料3模板主题

b09cbbtk  于 2022-11-16  发布在  Android
关注(0)|答案(2)|浏览(262)

当您在Android Studio中创建新项目时,选择模板Jetpack Compose Material3,您将获得一个在themes.xml中定义以下内容的项目:

<style name="Theme.ComposeMaterial3" parent="android:Theme.Material.Light.NoActionBar" />

1.自从可组合对象
参考材质3样式?(合成材质3主题)
1.为什么不将其设置为父“Theme.Material3..."?

9vw9lbht

9vw9lbht1#

在应用中,您可以定义更多合成主题(例如在Theme.kt文件中)。
要应用其中的一个,你必须用最喜欢的主题 Package 你的作曲。
例如:

setContent {
    MyCustomM3Theme {
      //...your composables
    }
}

关于xml中定义的主题,可以扩展一个M3主题为例:Theme.Material3.Light.NoActionBar

<style name="Theme.ComposeMaterial3" parent="Theme.Material3.Light.NoActionBar" />

但 composer 们并不使用它他们使用作曲主题
themes.xml中定义的主题被用在素材组件库中(和其他小部件一样作为状态栏)。
为什么不将其设置为父“Theme.Material3..."?
您的主题定义为:

@Composable
fun MyCustomM3Theme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    // Dynamic color is available on Android 12+
    dynamicColor: Boolean = true,
    content: @Composable () -> Unit
) {
    //...

    MaterialTheme(  //<---
        colorScheme = colorScheme,
        typography = Typography,
        content = content
    )
}
  • *MaterialTheme**在程序包androidx.compose.material3中定义
dojqjjoe

dojqjjoe2#

1.是的,它正在被使用。应用程序本身仍然可以使用xml主题,比如状态栏颜色和应用程序图标。一个很好的例子是https://github.com/android/compose-samples/tree/main/Jetchat项目。你可以看到他们是如何在该项目中使用Material3主题实现多个android版本的“material you”风格的。
1.这将是模板设计者的一个问题。在我看来,如果你看看JetChat中实现多个Android版本主题一致所需的基于主题的配置的数量,我可以相信ComposeMaterial3模板试图让事情变得更简单,以突出ComposeMaterial3中的概念。(尽管绝对没有证据支持这一点)。

相关问题