Material Design 3:如何使工具栏与主表面颜色相同?

Rob*_*ies 1 android material-design material-components-android android-12

我希望我的 Android 应用程序的工具栏与主表面颜色相同(以及状态栏——这已经是干净的 Android Studio 项目中开箱即用的主表面颜色)。我的目标是 Material Design 3 UI 指南。

对于以前版本的 Android,有各种现有的答案,质量各异,涉及运行相当长的样式和主题兔子洞,以捕获工具栏中错误的 UI 部分(图标、菜单等)。在 Android 的各种早期版本中,存在主题覆盖以及可生成浅色/浅色工具栏或深色/深色工具栏应用程序的主题变体。但这些钩子似乎都不存在于 Material3 中——根据设计,Material3 应该具有相同颜色的工具栏。

使用相对默认的配置,我的工具栏是(我认为)原色背景,白天为白色文本,晚上为白色背景上的黑色(主?)文本(相对于主表面和辅助表面相反)。而且我找不到道德上相当于白天/夜间主题的灯光工具栏灯光背景,希望能够尊重那些拥有 android 12++ 的壁纸匹配颜色(我确实如此)。

我觉得我在这里缺少一些简单的东西。

Fwiw,我没有使用 CoordinatoryLayout/AppLayout —— 只是一个裸露的工具栏,因为之前与 CoordinatorLayout 的不愉快争论以及在全屏模式下运行 Activites,我也将在这个项目中这样做。(CoordinatorLayout 没有给我任何我想要的东西,并且破坏了很多我想要的)。

我确实尝试在工具栏上设置明确的颜色,并且当图标没有改变颜色时运行到这里。(我以前已经走过这条路,至少在三个版本的 Android 上。:-P)。

该应用程序是一个新创建的(大约一周前)Android 应用程序,使用 Android studio 和最新的 SDK 创建。应用程序主题似乎已指向材料 2,尽管材料 3 的所有依赖项都是最新的。很难说;所有 Android 文档都告诉您如何迁移旧应用程序,而不是如何创建新应用程序——这是一个奇怪的遗漏。

小智 8

很高兴看到你的代码。但我也遇到了类似的问题。根据文档,工具栏背景的默认值是?attr/colorSurface并且设置为 on android:background。所以,我解决了覆盖工具栏样式的问题。

<style name="Theme.Custom" parent="Theme.Material3.Dark">
    <item name="toolbarStyle">@style/Theme.Custom.Toolbar</item>
</style>

<style name="Theme.Custom.Toolbar" parent="Widget.Material3.Toolbar">
    <item name="android:background">@color/your_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我希望这对您有帮助。