更改材质设计AppCompat ActionBar颜色
我以前用actionBarStyle
更改了AppCompat状态栏的颜色,并用背景创建了一个我想要的颜色。更改材质设计AppCompat ActionBar颜色
现在,使用Material Design AppCompat,此方法不再有效。
你能帮我吗?谢谢。
有一个新属性,称为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
之一。
您可以在developer.android.com上阅读更多关于自定义调色板的信息。
颜色主要用于Api 20+。在奇巧上时,这对我来说毫无用处。 – 2014-10-19 14:51:01
不是。 'colorPrimary'是'v7-appcompat'的一部分,所以它基本上可用于API-Level 7及更高版本(请注意父'Theme.AppCompat')。 – reVerse 2014-10-19 15:02:28
它的工作!谢谢! – user3184899 2014-10-19 15:13:34
在我的情况下,@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>
的directions in the documentation设置应用栏建议您在设定的主题在Android清单文件是这样的:
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
然而,在我的经验,这凌驾于定制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与黑暗的主题,确保该文本是光。)
你可能指的是动作条?只是为了清楚意味着什么。 – 2014-10-18 02:26:34
@NikolaDespotoski我有一个ActionBarActivity必须得到AppCompat风格。所以,我所做的就是向AppCompat样式添加一个名为actionBarStyle的属性,并且我在那里设置的样式具有将Action条变为另一种颜色的背景。 – user3184899 2014-10-18 02:30:50
@NikolaDespotoski有帮助吗? – user3184899 2014-10-18 19:26:11