gpt4 book ai didi

android - 对 2 个不同的 SDK 版本使用相同的可绘制对象

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:10 25 4
gpt4 key购买 nike

我正尝试在我的应用中添加对新 Material UI 的支持,但我遇到了一个恼人的情况。

在 SDK 14 之前,黑色应用程序菜单需要白色图标。从 SDK 14 开始,Holo light 主题需要深色图标。现在,当迁移到 Material 时,我再次需要白色图标。所以基本上我有一个文件夹 drawable-hdpi-v11、一个 drawable-hdpi-v14 和一个 drawable-hdpi-v21。 drawable-hdpi-v11 和 drawable-hdpi-v21 具有相同的图像,当然 Lint 会警告我重复了相同的资源。

我查看了别名 Creating alias resources ,但它似乎没有提供我需要的功能。您知道有什么方法可以在不复制资源的情况下获得相同的结果(SDK<14 或 SDK>=21 为白色图像,SDK>=14 和 SDK<21 为深色图像)吗?

最佳答案

您希望 @drawable/ic_action_heart 解析为:

  • 白色 < 14
  • 在 >= 14 和 < 21 时变暗
  • 白色 >= 21

在那种情况下:

  • res/drawable-hdpi-v14/

  • 中有一个深色版本的图标作为 ic_action_heart.png
  • res/drawable-hdpi/

    中将图标设为 ic_action_heart_white.png 的轻型版本
  • res/drawable-hdpi-v21/中有一个名为ic_action_heart.xml的drawable别名,指向@drawable/ic_action_heart_white

  • res/drawable-hdpi/中有一个drawable别名,名为ic_action_heart.xml,指向@drawable/ic_action_heart_white

当然,您在其他密度桶中也会有相同的基本结构(例如,-xxhdpi)。由于密度比 API 级别更重要,我认为您需要具有密度特定版本的别名。

关于android - 对 2 个不同的 SDK 版本使用相同的可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851928/

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