我正在为Android 4.0及更高版本开发应用程序。我刚刚更新到appcompat 22.2.0,但我在网上看到了所有这些对...- v21 / v22.xml的引用。它们用于什么?他们有所作为吗?提前谢谢!
答案 0 :(得分:62)
我在values-v21文件夹中有这个themes.xml
res/values-v21/
目录包含在运行您的应用的设备处于API级别21或更高级别时将使用的资源。如果设备在较旧版本的Android上运行,则res/values-v21/
目录将被忽略。
它们用于什么?他们有所作为吗?
它们用于为不同版本的Android提供不同版本的资源。
对于themes.xml
文件,API Level 21+设备可以具有继承自Theme.Material
的主题。但是,旧设备上不存在该主题。如果您在res/values/
中有一个试图引用Theme.Material
的主题,那么您的应用会在这些较旧的设备上崩溃。因此,您可以在res/values/
中放置一个主题,该主题适用于您支持的所有设备(例如,Theme.Holo
为11个或更高的minSdkVersion
,并且覆盖 res/values-v21/
中的主题改为使用Theme.Material
。
您可以在this sample app中看到Theme.Apptheme
(我的应用主题)继承自Theme.Holo
中的res/values/
并继承自Theme.Material
res/values-v21/
}}。运行时使用的Theme.Apptheme
版本取决于设备的Android版本。