web-dev-qa-db-ja.com

Android属性のフォーマット参照の意味

例から始めましょう

<attr name="spinnerDropDownItemStyle" format="reference" />

これを分解して理解するにはどうすればよいですか?

Androidのテーマとスタイルの謎を解き明かす-Google I/O 2016 何度も話しているのを見ていますが、この参照がどのように機能するのかまだわかりません。

16
Nouvel Travay

reference形式は、属性が別のリソースIDを参照する場合に使用されます。たとえば、次の属性は次のように使用できます。

<!-- Declaration -->
<attr name="mydrawale" format="reference" />

<!-- Usage -->
app:mydrawable="@drawable/shape1"

したがって、@layout/...@color/...@style/...などのリソースのタイプはreferenceです。

ただし、colorbooleanなどの属性形式には、それぞれカラーリテラル(例:0x00FF00)とブールリテラル(例:true)が必要です。

あなたの場合、spinnerDropDownItemStyleは、@style/...のようなリソースを取得する属性であり、それ自体がタイプstyleのリソースエントリへのポインタです。

ちなみに、|を使用してフォーマットを複数のタイプに設定できます。たとえば、次の属性の場合、@color/mycolor0x00FF00の両方が受け入れられます。

<attr name="mycolor" format="reference|color" />
21
frogatto