2016-06-28 8 views
0

は契約です:私のstyles.xmlでは、私は一般的なスタイルと、それは次のように他のinherinting 1を持っている:Androidのスタイル遺産

<resources> 

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

<style name="AppTheme.NoActionBar" parent="@style/AppTheme"> 
    <item name="colorPrimary">#0acf66</item> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

私は2番目のテーマ(AppThemeを適用します。 NoActionBar)それは色を継承しますが、アクションバーはまだそこにあります。 2番目のスタイルの親をTheme.AppCompat.NoActionBarに変更しても、それは機能しますが、色はまったく異なります。どうすれば修正できますか?

答えて

0

これはスタイル/ themseの継承問題です。スタイルからプロパティを継承するには2つの方法があります。

1.Throughドット表記(暗黙の):(明示的)

<style name="Theme.AppCompat.NoActionBar.Custom"> 
    // the parent will be Theme.AppCompat.NoActionBar 
</style> 

2.Through親タグ

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    //the parent is Theme.AppCompat.Light.DarkActionBar 
</style> 

ことの一つは、常に明示的な継承は、暗黙の継承に勝ち、覚えておきます。 「NoActionBar」テーマを持っているために、あなたのケース

<style name="AppTheme.NoActionBar" parent="@style/AppTheme"> 
    // your parent is AppTheme, and new style is AppThem.NoActionBar, 
     but it doesn't inherit from an actual NoActionBar style. 
</style> 

でそう

は、確かにあなたはその性質を持っているスタイルを継承しなければなりません。したがってTheme.AppCompat.NoActionBarを継承する別のAppTheme.NoActionBarを作成することができます。

テーマ/スタイルのより良いアイデアを得るには、この素晴らしいスタイルとテーマについてのGoogle I/O 2016リンクをチェックしてください。

+0

返信いただきありがとうございます。両方のテーマで#0acf66のような項目を繰り返さないようにしたいだけです。これを行う方法はありますか、まだ第二のテーマでアクションバーを隠すのですか? –

+0

私が知る限り、そうでない人はいません。しかし、同じ属性を持つ2つのテーマ、つまりアクションバーとテーマなしのテーマを持つのが一般的な方法です。 – danypata

関連する問題