2017-02-08 80 views
0

我只是一個初學者,學習如何創建樣式和主題。 我發現這個XML這裏:xml上沒有android命名空間的屬性

Material Log In Demo

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
</style> 

<style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 

    <item name="android:windowBackground">@color/primary</item> 

    <item name="colorControlNormal">@color/iron</item> 
    <item name="colorControlActivated">@color/white</item> 
    <item name="colorControlHighlight">@color/white</item> 
    <item name="android:textColorHint">@color/iron</item> 

    <item name="colorButtonNormal">@color/primary_darker</item> 
    <item name="android:colorButtonNormal">@color/primary_darker</item> 
</style> 

<style name="AppTheme.Dark.Dialog" parent="Theme.AppCompat.Dialog"> 
    <item name="colorAccent">@color/white</item> 
    <item name="android:textColorPrimary">@color/iron</item> 
    <item name="android:background">@color/primary</item> 
</style> 

我感到困惑的是,爲什麼<item>指令的一些name屬性對他們沒有android命名空間,而其他人?像colorButtonNormalandroid:colorButtonNormal。有人可以解釋何時/爲什麼使用它嗎?

回答

0

引用android doc並找到名稱屬性爲「必需」。 Android資源使用XML,這意味着他們需要使用XML Schema。如果他們使用任何名稱空間=>他們不希望與名稱發生任何衝突。希望這有助於 供參考: 「Schema」是允許接受(或創建)具有標準化元素名稱和層次結構的XML文檔所需的。

0

afaik,我們需要使用android:propertyName來根據API級別覆蓋特定樣式的屬性。例如,在value/styles.xml屬性名稱,你可能需要使用:

<style name="AppTheme.Dark.Dialog" parent="Theme.AppCompat.Dialog"> 
    ... 
    <item name="android:background">@color/primary</item> 
</style> 

values-v14/styles.xml你需要使用:

<style name="AppTheme.Dark.Dialog" parent="Theme.AppCompat.Dialog"> 
    ... 
    <item name="background">@color/primary</item> 
</style> 

這裏<item name="android:background"><item name="background">具有相同的含義。對於特定的API級別,只是一種不同的命名約定。

請注意,該示例僅用於演示目的。

+0

我會盡力找到相關文檔並將其包含在此處。目前,答案僅僅基於我的經驗。 –