更改材质deviseAppCompat ActionBar颜色

我曾经使用actionBarStyle更改AppCompat状态栏的颜色,并创build了一个背景颜色的样式。

现在,使用Material Design AppCompat,此方法不再适用。

你可以帮我吗? 谢谢。

Solutions Collecting From Web of "更改材质deviseAppCompat ActionBar颜色"

有一个新的属性叫做colorPrimary ,你可以在你的主题中定义。 这会给你的ActionBar或工具栏一个纯色。

举个例子:

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- colorPrimary is used for the default action bar background --> <item name="colorPrimary">@color/my_action_bar_color</item> </style> 

请注意:只有colorPrimary ,而不是android:colorPrimary ,除了values-v21之外的每个values-folder。

您可以阅读更多关于在developer.android.com上自定义调色板的信息。

在我的情况下,@reVerse有一个部分的答案。 为了使colorPrimary正常工作,我不得不做一些额外的修改,因为我正在自定义工具栏的其他部分…特别是文本颜色。

这里是我的工作styles.xml文件,带有注释表明我做错了:

 <!-- As @reVerse mentioned, you need to use colorPrimary instead of android:colorPrimary --> <style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/my_toolbar_color</item> </style> <!-- I was incorrectly using @style/Theme.AppCompat.Light for the popupTheme attribute --> <style name="MyToolbarStyle" parent="Widget.AppCompat.ActionBar"> <item name="theme">@style/MyToolbarTextStyle</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> </style> <!-- I was incorrectly using Them.AppCompat.Light for the parent here --> <style name="MyToolbarTextStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:textColorPrimary">@color/my_toolbar_text_color</item> </style> 

所以,当定制不止一个工具栏背景颜色时,您需要确保使用ThemeOverlay主题之一,或者由于某种原因,colorPrimary将被忽略。

为了完整起见,这里是我用于我的工具栏Toolbar.xml的布局文件:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schmeas.android.com/apk/res-auto" style="@style/MyToolbarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

希望这可以帮助别人!

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

另请参阅: 制作自定义ActionBar

在文档中设置应用栏的指导build议在Android Manifest文件中设置主题,如下所示:

 <application android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> 

但是,根据我的经验,这colorPrimary了为习惯AppTheme设置的colorPrimary风格。 对我来说有效的是定义一个像这样的自定义主题:

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

然后在AndroidManifest文件中使用这个主题。

 <application android:theme="@style/AppTheme" /> 

之后,在基于colorPrimary的活动中设置工具栏背景颜色工作正常。

 <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

(使用黑色主题设置ThemeOverlay可确保文字清晰。)