2016-06-28 66 views
0

這裏是處理:在我Styles.xml我有一個大致的風格與一個inherinting其他,因爲它遵循: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> 

當我申請的第二個主題(AppTheme。 NoActionBar)它繼承了顏色,但操作欄仍然存在。如果我將第二個樣式的父類更改爲Theme.AppCompat.NoActionBar,它可以工作,但顏色完全不同。我該如何解決它?

回答

0

所以這是styles/themse的繼承問題。有兩種方法從樣式繼承屬性。

1,通過點符號(隱含的):

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

2.通過父標籤(明確的)

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

有一件事要永遠記住,明確的繼承戰勝隱性遺傳。

所以你的情況

<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> 

爲了有一個「NoActionBar」的主題,確實是你必須從有產權的樣式繼承。因此,您可以創建另一個從Theme.AppCompat.NoActionBar繼承的AppTheme.NoActionBar

要獲得主題/樣式的更好的主意,請查看關於樣式和主題的這個真棒Google I/O 2016鏈接。

+0

感謝您的回覆。我只是想避免重複這兩個主題中的項目,例如#0acf66。有沒有辦法做到這一點,仍然隱藏在第二主題的動作欄? –

+0

據我所知,沒有沒有。但通常的做法是讓兩個主題具有相同的屬性,一個具有操作欄,另一個沒有。 – danypata