AndroidのAPIガイドStyles and Themesによると、スタイルは2つの異なる方法で別から継承することができますスタイルに親属性と点線の名前の両方がある場合、継承はどのように動作しますか?
は
<style>
要素でparent
属性は、次のことができます。
それは
parent
属性を持つことができますスタイルが属性を継承するスタイルを指定します。これを使用して、既存のスタイルから属性を継承し、変更または追加する属性のみを定義することができます。
それは点線の名前を持つことができる、などの長いスタイルから継承されているように、1つは、「自分自身を定義した」です:
あなたが定義したスタイルを継承したい場合あなたは
parent
を使う必要はありません。代わりに、新しいスタイルの名前に継承するスタイルの名前の前にピリオドで区切ってドット表記を使用できます。
<style>
が親と点線の名前の両方を持っている場合はどうなりますか?例えば、私が持っている場合:
<style name="Foo.Bar.Baz" parent="Pen.Pinapple.Apple.Pen">
はFoo.Bar
とPen.Pinapple.Apple.Pen
両方からFoo.Bar.Baz
継承していますか?属性がFoo.Bar
とPen.Pinapple.Apple.Pen
の両方に設定されている場合、どの値がFoo.Bar.Baz
になりますか?他のケースでは、属性がPen.Pineapple
に設定されているのと同様に、parent
の値がFoo.Bar
に設定されていますか?カスケーディングルールとは何ですか?そしてそれらはどこに文書化されていますか?
、答えより具体的なケースが、一般的なルールは何ですか? attrがMyStyle2に設定されていてMyStyle1に設定されていない場合はどうなりますか?親の男を「ドット付きの親」に設定することは完全に無視されますか、明示的な親が優先されますか? –
"attrがMyStyle2に設定されていて、MyStyle1に設定されていない場合はどうなりますか?"その正確なシナリオは私の答えでカバーされています。 'MyStyle2'の' android:textStyle'は完全に無視されます。 'parent' attrを設定することは、' '点線の親 ''が完全に無視されることを意味します(すべての_that_スタイルの親のように)。 –
おっと!はい、私はあなたの例を誤解しました - 私はMyStyle1とMyStyle2の両方が同じattrを設定していると思っていました。申し訳ありません。 –