2017-02-08 9 views
0

私はAndroidの初心者で、スタイルやテーマを作成する方法を勉強しています。 私はここに、このXMLを見つけました:xmlのandroid namespaceのない属性

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を使用します。彼らが名前空間=>を使用している場合、名前と競合することは望ましくありません。これが役に立ちますようにお願いします 参考: "スキーマ"は、標準化された要素名と階層構造を持つXML文書の受け入れ(または作成)を可能にするために必要なものです。

0

afaikの場合、APIレベルに基づいて特定のスタイルのプロパティをオーバーライドするには、android:propertyNameを使用する必要があります。例えば、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

私は関連するドキュメントを見つけて、ここに含めようとします。今のところ、答えは私の経験に基づいています。 –