我正在尝试将 Material 工具栏的背景颜色更改为表面颜色:
android:background="?attr/colorSurface"
按预期工作(为了简化它,我直接在 View 中设置了背景颜色,并没有为此创建自定义样式)。为了为明暗模式定义多种颜色,我创建了两个 colors.xml 文件。在灯光模式下,应用的表面颜色看起来符合预期:
但是当我更改为深色模式时,两个工具栏看起来像这样(仍然都引用相同的颜色资源):
右边的工具栏有正确的背景颜色,左边的没有。
然后我检查了我在深色模式下定义的每种颜色是否都发生了同样的事情,所以我将表面颜色更改为我的原色。在黑暗模式下它看起来像这样:
所以在这种情况下,颜色看起来是一样的,但是当我使用我的表面颜色时,它就不同了。
我也尝试将 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/