例から始めましょう
<attr name="spinnerDropDownItemStyle" format="reference" />
これを分解して理解するにはどうすればよいですか?
Androidのテーマとスタイルの謎を解き明かす-Google I/O 2016 何度も話しているのを見ていますが、この参照がどのように機能するのかまだわかりません。
reference
形式は、属性が別のリソースIDを参照する場合に使用されます。たとえば、次の属性は次のように使用できます。
<!-- Declaration -->
<attr name="mydrawale" format="reference" />
<!-- Usage -->
app:mydrawable="@drawable/shape1"
したがって、@layout/...
、@color/...
、@style/...
などのリソースのタイプはreference
です。
ただし、color
、boolean
などの属性形式には、それぞれカラーリテラル(例:0x00FF00
)とブールリテラル(例:true
)が必要です。
あなたの場合、spinnerDropDownItemStyle
は、@style/...
のようなリソースを取得する属性であり、それ自体がタイプstyleのリソースエントリへのポインタです。
ちなみに、|
を使用してフォーマットを複数のタイプに設定できます。たとえば、次の属性の場合、@color/mycolor
と0x00FF00
の両方が受け入れられます。
<attr name="mycolor" format="reference|color" />