2016-05-31 31 views
1

我一直在嘗試使用支持庫來自定義我的工具欄。雖然設置android:theme在API21 +上完美工作,但較低的API似乎完全忽略它。Android:主題對舊版Apis沒有任何影響

,這裏是我的xml:

<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
</android.support.design.widget.AppBarLayout> 

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"使工具欄在API21 +白色圖標,圖標保持黑色的舊設備。

更新:我測試了我的appBarLayout添加另一個孩子(tabLayout)。主題正確應用。但即使直接設置,支持工具欄也完全拒絕識別主題。

回答

2

後掙扎的日子,我終於發現了問題。我的佈局是在調用super.onCreate()之前設置的,無論出於什麼原因,這使得工具欄不能在未使用本地工具欄的pre-lolipop設備中應用正確的主題。

讓我確信:

setContentView(R.layout.main); 

來後:

super.onCreate(savedinstancestate); 
0

嘿你必須使版本號的風格文件。 對於這些值,然後單擊右鍵單擊值資源文件 然後將文件命名爲樣式,然後在對話框下的可用限定符選擇版本文件,然後按圖標>>然後輸入版本19它,這個文件將少一個版本的工作,然後阿比21+

this is the dialog you will get on click of value Resource file

this is the final dialog where you need to enter your version number

它可以幫助你。

+0

我已經試過這是我評論對方的回答。無論我如何設置,android:theme值似乎都被完全忽略。 – Ramin

0

您已經在基於API版本的文件夾中設置主題風格並應用,以便它將基於API版本進行應用。

在styles.xml中放置主題。 然後在values文件夾中複製styles.xml文件,以獲得不同API級別的文件夾[根據您的要求創建值-X文件夾] 請參考下圖。

Click here to view image

+0

我已經試過這個,雖然ThemeOverlay.AppCompat.Dark.ActionBar在庫本身,我創建了一個自定義主題並將其設置爲父級。沒有效果。無論是否將它放在各自的文件夾(styles-v19.xml)中,android:theme值在低級API中都會完全忽略 – Ramin

相關問題