Android Material Toolbar 表面颜色在两个不同的工具栏上看起来不同

标签 android material-design toolbar

我正在尝试将 Material 工具栏的背景颜色更改为表面颜色:

android:background="?attr/colorSurface"

按预期工作(为了简化它,我直接在 View 中设置了背景颜色,并没有为此创建自定义样式)。为了为明暗模式定义多种颜色,我创建了两个 colors.xml 文件。在灯光模式下,应用的表面颜色看起来符合预期:

light mode

但是当我更改为深色模式时,两个工具栏看起来像这样(仍然都引用相同的颜色资源):

dark mode

右边的工具栏有正确的背景颜色,左边的没有。

然后我检查了我在深色模式下定义的每种颜色是否都发生了同样的事情,所以我将表面颜色更改为我的原色。在黑暗模式下它看起来像这样:

dark mode with primary color

所以在这种情况下,颜色看起来是一样的,但是当我使用我的表面颜色时,它就不同了。

我也尝试将 Widget.MaterialComponents.Toolbar.Surface 工具栏更改为 Widget.MaterialComponents.Toolbar,但结果仍然相同。

最佳答案

So in this case the colors look the same, but when I'm using my surface color, it does not.

它的发生是因为 Elevation Overlays .
您可以避免在您的应用主题中将海拔叠加层 elevationOverlayEnabled 设置为 false

最后一点。在您的 MaterialToolbar 中,您应该使用:

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface"
        ..>

该样式会自动在浅色主题下组件的主要颜色样式和深色主题下的表面颜色样式之间切换。

关于Android Material Toolbar 表面颜色在两个不同的工具栏上看起来不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62133090/

相关文章:

android - 持久的应用程序。我的应用程序运行时设备不会休眠?

android - 为什么 backgroundTint 需要 android : prefix after API 21 but not before?

android - 如何以编程方式修复android上的圆角按钮?

java - 使用 CoordinatorLayout 时如何消除抽屉导航在工具栏上转换的阴影

android - 在工具栏中更改边距和重力折叠标题

java - 在 Android Studio 中丢失对静态数据的引用

Android RecyclerView 在垂直滚动后显示加载新内容之前最后加载的图像?

android - Material Design - 'use the tint 700' 是什么意思?

java - 状态栏的颜色不随 Theme.AppCompat.Light 变化

toolbar - CollapsingToolbarLayout 滚动问题