我正在尝试在我的应用中添加对新材质UI的支持,但我遇到了令人讨厌的情况。
在SDK 14之前,黑色应用菜单需要白色图标。从SDK 14开始,Holo灯主题需要黑色图标。现在,当迁移到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的黑色图像),而不重复资源?
答案 0 :(得分:7)
您希望@drawable/ic_action_heart
解析为:
在那种情况下:
在ic_action_heart.png
res/drawable-hdpi-v14/
在ic_action_heart_white.png
res/drawable-hdpi/
在ic_action_heart.xml
中有一个名为res/drawable-hdpi-v21/
的可绘制别名,指向@drawable/ic_action_heart_white
在ic_action_heart.xml
中有一个名为res/drawable-hdpi/
的可绘制别名,指向@drawable/ic_action_heart_white
当然,在其他密度桶中你会有相同的基本结构(例如,-xxhdpi
)。由于密度比API级别更重要,我认为您需要具有密度特定版本的别名。