有什么用... -v21.xml?

Jdr*_*uwe 32 android android-appcompat

我正在为Android 4.0及更高版本开发一个应用程序.我刚刚更新到appcompat 22.2.0,但我在网上看到所有这些对...- v21/v22.xml的引用.它们用于什么?他们有所作为吗?提前致谢!

Com*_*are 69

我在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.HolominSdkVersion11或更高),以及覆盖该主题res/values-v21/改为使用Theme.Material.

你可以看到,在这个示例应用程序,其中Theme.Apptheme(我的应用程序的主题)从继承Theme.Holores/values/和继承Theme.Materialres/values-v21/.Theme.Apptheme运行时使用的版本取决于设备的Android版本.

  • @ShirishHerwade:文件名无关紧要.样式资源的名称很重要.如果您在`values /`和`values-21 /`(以及其他地方)中定义了相同的样式资源名称,API Level 21+设备将使用`values-21 /`中定义的资源,而运行旧版本的设备Android使用`values /`中定义的资源. (3认同)
  • @Jdruwe:`Theme.AppCompat`及其子节点(例如,`Theme.AppCompat.Light`)返回API级别7,`appcompat-v7`处理与该主题相关的所有向后兼容性工作. (2认同)