2016-03-29 7 views
5

Androidの開発者の例、ブログなどでは、スタイル属性の値に複数の接頭辞があります。誰かが何を使うべきか記述してもらえますか?たとえば、これらの3つのケースの違いは何ですか?Androidスタイル - @style、android :, @android:styleなどの違い

parent="@android:style/TextAppearance" 
parent="TextAppearance.AppCompat" 
parent="@style/TextAppearance.AppCompat" 

これら2つのケースの違いは何ですか?

<item name="colorControlNormal">@color/white</item> 
<item name="android:colorControlNormal">@color/white</item> 

答えて

4

プレフィックスがない場合、同じファイルに名前が付けられたスタイルを参照しません。

@Stylestyle.xmlプロジェクトファイルを参照してください。

@android:スタイル参照がAndroidのAPIスタイルを定義しました。

Style ResourceおよびStyle and Themesについての詳細

colorControlNormalアンドロイド:colorControlNormalは同じ説明です。 controlColorNormalを使用する場合は、フレームワークコントロールに適用される色を通常の状態でアプリで定義しています。 android:colorControlNormalを使用すると、システムによってフレームワークコントロールに適用されるデフォルトの色が上書きされます。

+0

これはAppCompatでは当てはまりません。 – technophyle

2

名前付きリソースが出現していることを示す@と考えることができます。

@type/nameは、アプリケーションで定義されているnameという名前のタイプtype(文字列、色、レイアウト、スタイルなど)のリソースを識別しています。

@+id/nameは、すでに存在しない場合に作成されるnameというIDリソースを識別します(ただし、@ idはすでに存在するIDを参照します)。

@android:type/nameは、名前のリソースが( - それはデバイスによって提供されます、それはアプリで定義されていないです)まで来ているのAndroidプラットフォームの一部であることを意味します。

スタイル・ペアレントの場合、@styleはオプションです。スタイルは名前で直接参照できます。とにかく別のスタイル以外からスタイルを派生させることができないので、冗長です。

+0

ありがとうございます。 colorControlNormalとandroid:colorControlNormalの部分について詳しく説明してください。私は自分のstyle.xmlでどちらを使うべきですか? – clocksmith

+1

あなたが使用するべきものはどれですか?あなたのケースに合った正しいものを特定することです。自分が定義したリソースの場合は、その名前を使用します。 Androidプラットフォームで定義されているものなら、アンドロイドプレフィックスが必要です。 –

+0

それはダグが言ったように。上記の私の編集された投稿を見てください。 –