我正在为 4.0 及更高版本的 android 开发应用程序。我刚刚更新到 appcompat 22.2.0,但我在网络上看到所有这些对 ...-v21/v22.xml 的引用。它们是用来做什么的?他们有什么不同吗?提前致谢!
最佳答案
I had this themes.xml in the values-v21 folder
一个 res/values-v21/
目录包含将在运行您的应用程序的设备处于 API 级别 21 或更高级别时使用的资源。如果设备在旧版本的 Android 上运行,res/values-v21/
目录将被忽略。
What are they used for? Do they make a difference?
它们用于为不同版本的Android提供不同版本的资源。
如果是 themes.xml
文件,API 级别 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 版本。
关于android - ...-v21.xml 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303777/