gpt4 book ai didi

android - 了解菜单图标颜色的来源

转载 作者:行者123 更新时间:2023-11-29 00:52:19 24 4
gpt4 key购买 nike

我目前正在研究 Google IO 2019 源代码,但有一件事我无法弄清楚它的来源:汉堡菜单图标的颜色。

这是 mobile\src\main\res\layout\fragment_codelabs.xml ( source link ) 预览的屏幕截图: enter image description here

这是汉堡包菜单图标的放大图,可以很容易地看出它至少不是黑色的: enter image description here

图片来源为@drawable/ic_menu: enter image description here

@drawable/ic_menu(mobile\src\main\res\drawable\ic_menu.xml)(source link)的源码是

<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)。然而,汉堡包菜单图标并未显示为黑色。那么,汉堡菜单图标显示的颜色实际上来自哪里?

最佳答案

我试图更深入地研究样式,它很可能来自 Activity 主题父项之一的默认参数。我将尝试展示我是如何找到它的。

  1. \mobile\src\main\AndroidManifest.xml文件,所有 Activity 都继承自 android:theme="@style/AppTheme"
  2. <style name="AppTheme" parent="Base.AppTheme" />
  3. <style name="Base.AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
  4. <style name="Theme.MaterialComponents.DayNight.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar"/>
  5. <style name="Theme.MaterialComponents.Light" parent="Base.Theme.MaterialComponents.Light"/>
  6. <style name="Base.Theme.MaterialComponents.Light" parent="Base.V14.Theme.MaterialComponents.Light"/>
  7. <style name="Base.V14.Theme.MaterialComponents.Light" parent="Base.V14.Theme.MaterialComponents.Light.Bridge">
  8. <style name="Base.V14.Theme.MaterialComponents.Light.Bridge" parent="Platform.MaterialComponents.Light">
  9. <style name="Platform.MaterialComponents.Light" parent="Theme.AppCompat.Light"/>
  10. <style name="Theme.AppCompat.Light" parent="Base.Theme.AppCompat.Light"/>
  11. <style name="Base.Theme.AppCompat.Light" parent="Base.V28.Theme.AppCompat.Light"/>
  12. <style name="Base.V28.Theme.AppCompat.Light" parent="Base.V26.Theme.AppCompat.Light">
  13. <style name="Base.V26.Theme.AppCompat.Light" parent="Base.V23.Theme.AppCompat.Light">
  14. <style name="Base.V23.Theme.AppCompat.Light" parent="Base.V22.Theme.AppCompat.Light">
  15. <style name="Base.V22.Theme.AppCompat.Light" parent="Base.V21.Theme.AppCompat.Light">
  16. <style name="Base.V21.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light">
  17. 你可以看到我们很接近<item name="android:colorControlNormal">?attr/colorControlNormal</item> ,我们需要更深入。
  18. <style name="Base.V7.Theme.AppCompat.Light" parent="Platform.AppCompat.Light">
  19. 就是<item name="colorControlNormal">?android:attr/textColorSecondary</item> :)
  20. 但是,我们可以更深入,直到我们到达 <style name="Theme.Material.Light" parent="Theme.Light">
  21. <item name="textColorSecondary">@color/text_color_secondary</item>
  22. 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>

  23. <item name="colorForeground">@color/foreground_material_light</item>

  24. 并在 colors_material.xml它是 <color name="foreground_material_light">@color/black</color>
  25. alpha 是 <item name="secondary_content_alpha_material_light" format="float" type="dimen">0.54</item>

所以,简单来说:菜单图标的颜色是默认主题黑色alpha 0.54

关于android - 了解菜单图标颜色的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58173259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com