編集2:これは失敗した試行で、スタイルを適用すると、プログラミングによって設定された以前のスタイルが再び削除されます。
Androidのすべてのスタイルに親スタイルを設定できます。したがって、子スタイルは親のスタイルを継承し、独自のスタイルも適用します。また、子はその親のスタイルやプロパティをオーバーライドできます。
<!-- This is a parent style -->
<style name="AppTheme.OverlayPrimaryRed">
<item name="colorPrimary">@color/material_red_500</item>
<item name="colorPrimaryDark">@color/material_red_700</item>
</style>
<!-- This is a child of above style -->
<style name="AppTheme.OverlayAccentRed" parent="AppTheme.OverlayPrimaryRed">
<item name="colorAccent">@color/material_red_A200</item>
</style>
Defining StylesをAndroidデベロッパーのリソースで参照してください。また、parent
属性を使用したくない場合は、
自分で定義したスタイルから継承したい場合は、親属性を使用する必要はありません。代わりに、新しいスタイルの名前に継承したいスタイルの名前の前に、ピリオドで区切って接頭辞を付けます。には、親の属性が存在しないこと
<style name="MyTextStyle">
<item name="android:textAllCaps">false</item>
<item name="android:textColor">#FFFFFF</item> <!-- white text (default) -->
<item name="android:textStyle">bold</item>
<item name="android:textSize">12dp</item>
</style>
<!-- red text -->
<style name="MyTextStyle.RED">
<item name="android:textColor">#FF0000</item>
</style>
<!-- green text -->
<style name="MyTextStyle.GREEN">
<item name="android:textColor">#00FF00</item>
</style>
<!-- blue text -->
<style name="MyTextStyle.BLUE">
<item name="android:textColor">#0000FF</item>
</style>
お知らせ:たとえば、定義されたMyTextStyle
スタイルを継承する新しいスタイルを作成しますが、色は赤にするために、あなたは、このような新しいスタイルを作成できますname属性がMyTextStyle
スタイル名(作成したスタイル)で始まるため、このスタイルはそのスタイルからすべてのスタイルプロパティを継承します。このスタイルは、android:textColor
プロパティをオーバーライドして、テキストを赤にすることができます。この新しいスタイルは@style/MyTextStyle.RED
として参照できます。
名前をピリオドで連結して、何度でも継承することができます。たとえば、あなたが、より大きくすることMyTextStyle.RED
を拡張することができます
<style name="MyTextStyle.RED.Big">
<item name="android:textSize">30sp</item>
</style>
を編集1:
<!-- this is your root style -->
<style name="AppTheme.Overlay">
<!-- default styles for primary, primaryDark (you can add accent too) -->
</style>
<!-- 1. add Custom Primary Color to root style -->
<style name="AppTheme.Overlay.PrimaryRed">
<item name="colorPrimary">@color/material_red_500</item>
<item name="colorPrimaryDark">@color/material_red_700</item>
</style>
<!-- 1. add Custom Accent Color to root style -->
<style name="AppTheme.Overlay.AccentRed">
<item name="colorAccent">@color/material_red_A200</item>
</style>
<!-- 2. add Custom Primary Color to root style -->
<style name="AppTheme.Overlay.PrimaryBlue">
<item name="colorPrimary">@color/material_blue_500</item>
<item name="colorPrimaryDark">@color/material_blue_700</item>
</style>
<!-- 2. add Custom Accent Color to root style -->
<style name="AppTheme.Overlay.AccentBlue">
<item name="colorAccent">@color/material_blue_A200</item>
</style>
<!-- add 10 for each...... -->
あなたの原色のための10個のスタイル、そしてあなたのアクセント色のための10個のスタイルを作成します。
次に、あなたのコードで:
ここ
// if root style has some styles to add (default)
getTheme().applyStyle(R.style.AppTheme_Overlay);
// first color selection
getTheme().applyStyle(R.style.AppTheme_Overlay_PrimaryRed);
getTheme().applyStyle(R.style.AppTheme_Overlay_AccentRed);
// when you want blue color
getTheme().applyStyle(R.style.AppTheme_Overlay_PrimaryBlue);
getTheme().applyStyle(R.style.AppTheme_Overlay_AccentBlue);
// when you want bluePrimary, but redAccent color (bad choice)
getTheme().applyStyle(R.style.AppTheme_Overlay_PrimaryBlue);
getTheme().applyStyle(R.style.AppTheme_Overlay_AccentRed);
、AppTheme_Overlay_PrimaryBlue
はを上書きします。等々。
ルートスタイルを1つ追加し、10個の主要なカラースタイルと10個のアクセントカラースタイル= 21スタイルを追加しました。
ありがとう!これは私のために働いた。 –