我目前正在致力於我的應用程序基於其設計的全息主題。全球我想做的是工作,但我對工作文件夾values
,values-v11
和values-v14
的方式有點困惑。樣式和主題的價值觀,值-V11和值-V14文件夾
所以我知道:
values
瞄準的是API遜色於11values-v11
的目標是11和13values-v14
之間的API的目標是優越的API,以13
起初我以爲我必須爲每個文件夾指定應用程序所需的所有樣式,但後來我意識到一種繼承系統幹到位。
我的問題是,我真的很困惑,不明白如何在這3個文件夾之間進行這種繼承。
我爲了看我的手機上的行爲,下列測試(在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-v14
,系統也會採用values-v11
文件夾中的樣式?我認爲它可能會默認使用values
文件夾,但不會使用values-v11
。
更一般地說,我的問題是,這3個文件夾是作爲父母還是孩子工作的? 含義是:
- 如果該設備上的API版本> 13運行時,系統將加載
values-v14
然後values-v11
和最後values
。 - 如果設備在11和13之間的API上運行,則系統將加載
values-v11
,然後加載values
。 - 如果設備在API版本< 11上運行,系統將僅加載
values
。
如果它確實是它的工作方式,是否有意義,然後設置最大的風格在父文件夾values
和V11或V14只添加特定的人?
對不起,長的問題,我希望它是明確的,這個主題/風格的系統僅在Android指南中簡要介紹,這是很難找到它如何工作的信息...
謝謝您幫幫我!
如果存在**值-v14 **,那麼'values-v14'的目標API> = 14,'values-v11'在(包括)11和13 **之間的目標API **否則**將匹配每個版本從11開始。 'values'是默認的文件夾,它將是最後匹配的,覆蓋其他API不包含的其他'values-xx'文件夾。 – Luksprog
謝謝Luksprog。基於這種機制,這意味着最好只安裝v11和v14風格,而不能被較低版本使用。 (爲了保持簡單的樣式,就像我在'values'中發佈的那樣)? –
這就是想法,在使用從該版本添加的屬性時使用版本指示符。例如,Honeycomb引入了「ListView」的'activatedBackgroundIndicator'屬性。因爲這不在'11'下面,所以'values'文件夾不會使用這個文件夾,但是你可以包含一個'values-v11'文件夾來利用應用程序中的屬性。但是如果您有不同的文件夾,則需要其他樣式。 – Luksprog