2016-12-20 43 views
7

我已經看到一些風格屬性需要android前綴,有些不需要它。是什麼原因。像爲什麼當我們需要添加android:前綴風格?

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

爲什麼我們不使用android:windowActionBarandroid:windowNoTitle

回答

2

基於SDK版本的Android風格在不同的命名空間進行分組。爲了覆蓋主題,你必須遵循它的命名空間。

這是伸出的AppCompat主題時,你不需要android:前綴的原因,但如果你想別的事情,比方說Theme.Holo - 你有2種不同風格的他們 - 一個預棒棒糖設備,另一個用於-21,後者在每個樣式屬性之前都有android:前綴。

+0

但我怎麼記得添加它,什麼時候被忽視。對於AppCompat並不總是需要它。但是如果我們將它用於Holo之類的主題,我們必須爲style.xml創建兩個文件夾,一個用於沒有android前綴的lolipop,另一個用前綴。我對嗎。?? – Nepster

+0

是的,2個不同的xmls將用於'Holo' - 一個用於樣式,另一個用於樣式-21。我不知道是否有辦法告訴當你有做,但在大多數情況下,IDE會表明你需要更高的API級別和SO快速搜索錯誤會幫助你解決問題 –

0

這取決於你使用和背景它是主題。這些屬性由不同的來源定義。

如果屬性名稱的前綴與android:,這是一個框架屬性,只能用於有它定義的Android版本。

如果屬性是不是在所有的前綴,屬性由你自己的應用程序定義。這包括您使用庫拉入的所有屬性定義。

在你的榜樣,你要定義AppCompat一個主題是支持庫的一部分,因此您的申請。框架小部件不會直接識別這些顏色。