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

Tim*_* S. 2 android toolbar material-design

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

android:background="?attr/colorSurface"
Run Code Online (Sandbox Code Playgroud)

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

光模式

但是当我切换到暗模式时,两个工具栏看起来像这样(仍然引用相同的颜色资源):

暗模式

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

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

带有原色的暗模式

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

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

Gab*_*tti 6

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

这是因为Elevation Overlays
你可以避开海拔叠加设置elevationOverlayEnabledfalse你的应用程序的主题。

只是最后一点。在MaterialToolbar你应该使用:

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface"
        ..>
Run Code Online (Sandbox Code Playgroud)

此样式将自动在浅色主题的组件原色样式和深色主题的表面色样式之间切换。

  • 这个答案毫无用处。多年来,我一直在追逐材料设计风格,想知道为什么材料设计会强行改变我痛苦选择的颜色,却不知道黑暗模式的这个“功能”一直是罪魁祸首! (2认同)