2015-07-08 1 views
18

Я разрабатываю приложение для Android версии 4.0 и выше. Я просто обновился до appcompat 22.2.0, но я вижу все эти ссылки на ...- v21/v22.xml в Интернете. Для чего они используются? Они имеют значение? Заранее спасибо!Что такое использование ...- v21.xml?

+2

Вы имеете в виду значения-v21? values-v21 содержит ресурсы для применения на android api 21 и выше. – krystian71115

+0

Пример: панель действий добавлена ​​в api 11. Чтобы отобразить панель действий, вы можете установить другой стиль в значениях-v11. – krystian71115

+0

Например, у меня был этот theme.xml в папке values-v21 при следующем учебнике: http://pastebin.com/g0GrFyQT. Я не уверен, действительно ли это мне нужно или нет: S – Jdruwe

ответ

43

У меня была themes.xml в папке значения-V21

res/values-v21/ каталог содержит ресурсы, которые будут использоваться, когда устройство, которое работает приложение на API Level 21 или выше. Если устройство работает на более ранней версии Android, каталог res/values-v21/ будет проигнорирован.

Для чего они предназначены? Они имеют значение?

Они предназначены для предоставления различных версий ресурсов для различных версий Android.

В случае файла themes.xml устройство уровня API 21+ может иметь тему, которая наследуется от Theme.Material. Однако эта тема не существует на более старых устройствах. Если у вас есть тема в res/values/, которая пытается ссылаться на Theme.Material, ваше приложение выйдет из строя на этих старых устройствах. Таким образом, вместо того, вы поставите тему в res/values/, который будет работать на всех устройствах, которые вы поддерживаете (например, Theme.Holo для minSdkVersion 11 или выше), и переназначения, что тема в res/values-v21/, чтобы использовать вместо Theme.Material.

Вы можете видеть, что в this sample app, где Theme.Apptheme (тема моего приложения в) наследуется от Theme.Holo в res/values/ и наследуется от Theme.Material в res/values-v21/. Какая версия Theme.Apptheme используется во время выполнения, зависит от версии Android, которую имеет устройство.

+0

Это объяснение имеет большой смысл, спасибо. В моем приложении я ссылаюсь на стиль, который имеет «Theme.AppCompat.Light» в качестве родителя, означает ли это, что appcompact позаботится обо всей этой обратной совместимости, так что мне не нужно создавать xml в папке значений-v21 ? – Jdruwe

+2

@Jdruwe: 'Theme.AppCompat' и его дочерние элементы (например,' Theme.AppCompat.Light') возвращаются к уровню API 7, а 'appcompat-v7' обрабатывает всю работу по обратной совместимости, связанную с этой темой. – CommonsWare

+0

@Jdruwe Нет, вам это не нужно. Вы можете создать xml в папке значений (не в значениях-v21) – krystian71115