我目前正在搜索GoogleIO2019的源代码,有一件事我不知道它从何而来:汉堡包菜单图标的颜色。
以下是mobile\src\main\res\layout\fragment_codelabs.xml (源链接)预览的屏幕截图:

这是一个放大的汉堡包菜单图标,可以很容易地看到它至少不是黑色的:

图像源是@drawable/ic_menu:

@drawable/ic_menu(mobile\src\main\res\drawable\ic_menu.xml) (源链接)的源代码是
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?colorControlNormal">
<path
android:fillColor="#FF000000"
android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z" />
</vector>在这里,fillColor被指定为#FF000000,它是100 %的黑色和不透明的(alpha FF)。然而,汉堡包菜单图标并没有以黑色显示。那么,汉堡包菜单图标所显示的颜色在哪里呢?
发布于 2019-09-30 20:41:13
我试图深入挖掘样式,很可能它来自活动主题的父主题之一的默认参数。我会试着展示一下我是怎么找到的。
\mobile\src\main\AndroidManifest.xml文件中,所有活动都是从android:theme="@style/AppTheme"继承的。<style name="AppTheme" parent="Base.AppTheme" /><style name="Base.AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"><style name="Theme.MaterialComponents.DayNight.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar"/><style name="Theme.MaterialComponents.Light" parent="Base.Theme.MaterialComponents.Light"/><style name="Base.Theme.MaterialComponents.Light" parent="Base.V14.Theme.MaterialComponents.Light"/><style name="Base.V14.Theme.MaterialComponents.Light" parent="Base.V14.Theme.MaterialComponents.Light.Bridge"><style name="Base.V14.Theme.MaterialComponents.Light.Bridge" parent="Platform.MaterialComponents.Light"><style name="Platform.MaterialComponents.Light" parent="Theme.AppCompat.Light"/><style name="Theme.AppCompat.Light" parent="Base.Theme.AppCompat.Light"/><style name="Base.Theme.AppCompat.Light" parent="Base.V28.Theme.AppCompat.Light"/><style name="Base.V28.Theme.AppCompat.Light" parent="Base.V26.Theme.AppCompat.Light"><style name="Base.V26.Theme.AppCompat.Light" parent="Base.V23.Theme.AppCompat.Light"><style name="Base.V23.Theme.AppCompat.Light" parent="Base.V22.Theme.AppCompat.Light"><style name="Base.V22.Theme.AppCompat.Light" parent="Base.V21.Theme.AppCompat.Light"><style name="Base.V21.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light"><item name="android:colorControlNormal">?attr/colorControlNormal</item>很近,我们需要走得更远。<style name="Base.V7.Theme.AppCompat.Light" parent="Platform.AppCompat.Light"><item name="colorControlNormal">?android:attr/textColorSecondary</item> :)<style name="Theme.Material.Light" parent="Theme.Light"><item name="textColorSecondary">@color/text_color_secondary</item>text_color_secondary.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:alpha="?attr/disabledAlpha" android:color="?attr/colorForeground"/> <item android:alpha="?attr/secondaryContentAlpha" android:color="?attr/colorForeground"/> </selector><item name="colorForeground">@color/foreground_material_light</item>colors_material.xml中,它是<color name="foreground_material_light">@color/black</color><item name="secondary_content_alpha_material_light" format="float" type="dimen">0.54</item>因此,简单地说:菜单图标的颜色是默认主题黑色和alpha 0.54
https://stackoverflow.com/questions/58173259
复制相似问题