В настоящее время я работаю над своим приложением, чтобы основать его дизайн на теме Holo. В глобальном масштабе я хочу работать, но я немного смущен тем, как работают папки values
, values-v11
и values-v14
.
Итак, я знаю, что:
-
values
нацелен на API ниже 11 -
values-v11
нацелен на API между 11 и 13 -
values-v14
нацелен на API выше 13
Сначала мне показалось, что мне нужно указать для каждой папки все стили, необходимые для приложения, но затем я понял, что на самом деле существует система наследования.
Моя проблема в том, что я действительно запутался и не понимаю, как работает это наследование между этими тремя папками.
Я сделал следующий тест, чтобы увидеть поведение на моем телефоне (работает на Android 4.0, поэтому папка values-v14
должна быть загружена):
В values
У меня есть стиль для синего цвета текста:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>
В values-v11
У меня есть стиль, чтобы установить белый цвет текста:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
В values-v14
У меня есть стиль, чтобы установить красный цвет текста:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>
В первом случае выше (каждая папка с другим цветом) цвет, загруженный в мой текст, красный, что означает, что папка values-v14
получает приоритет.
Затем, если я прокомментирую красный стиль из папки values-v14
, текст станет белым. Означает ли это, что система примет стиль в папке values-v11
, даже если устройство настроено на таргетинг на папку values-v14
? Я думал, что, возможно, будет использовать папку values
по умолчанию, но не values-v11
.
В общем, мой вопрос: эти 3 папки работают как родительские и дочерние? Это означает, что:
- Если устройство работает в версии API > 13, система загрузит
values-v14
, затемvalues-v11
и, наконец,values
. - Если устройство работает в API от 11 до 13, система загрузит
values-v11
, а затемvalues
. - Если устройство работает в версии API < 11, система будет загружать только
values
.
Если это действительно так, как он работает, имеет ли смысл тогда установить максимальное количество стилей в родительской папке values
и добавить только определенные в v11 или v14?
Извините за длинный вопрос, я надеюсь, что это понятно, эта система тем/стилей кратко описана в руководстве Android, и сложно найти информацию о том, как она работает...
Спасибо за вашу помощь!