繁体   English   中英

Android SDK:无法设置支持库的ActionBar样式

[英]Android SDK: Can't style ActionBar of support library

出于某种原因,在实现support-v7时,无法使用style.xml设置操作栏的样式。

我有两个样式文件。 这是来自values文件夹的style.xml:

<resources>

    <color name="primary">#009688</color>
    <color name="primaryDark">#00796B</color>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/myActionBar</item>
    </style>

    <style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/primary</item>
    </style>

</resources>

值-v21中的棒棒糖样式如下:

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primaryDark</item>
    </style>
</resources>

这里发生了什么:

1)默认情况下,我的应用从support-v7库实现android.support.v7.app.ActionBarActivity。 当我启动它时:

a)在Android 4.4上,操作栏未着色,就像以前一样是黑暗的。

b)在Android 5设备上,它也不是彩色的,但是状态栏会变为彩色。

因此,操作栏样式不适用于support-v7的栏。 即使将全局textColor参数设置为明亮的值,每个文本也会更改颜色,但只有我的应用程序标题保持白色。

但是,我仍然可以在代码中为其着色: getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#673AB7")))

2)如果我为我的应用实现了android.app.Activity(不是android.support.v7.app.ActionBarActivity):

a)棒棒糖设备获得整洁的绿色操作栏和整洁的绿色状态栏。 b)但在4.4动作条上完全消失。

我尝试使用主题标签上的values / style.xml中的这些样式参数将其恢复,但是它们都不起作用:

<item name="android:windowActionBar">true</item>
<item name="android:displayOptions">showTitle</item>

最小SDK设置为15。

如何在两个平台上获取样式化的操作栏?

遵循本指南

1)您的所有活动都必须从ActionBarActivity扩展,而ActionBarActivity从v4支持库的FragmentActivity扩展,因此您可以继续使用片段。

2)删除values-v21 / themes.xml并仅保留values / themes.xml

3)告诉Android将工具栏用作ActionBar:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

4)在您的style.xml中,替换

<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/primary</item>
</style> 

<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/primary</item>
</style>

只需将它们设置为values / style.xml中的自定义基本主题

 <item name="colorPrimary">@color/your_primary_color</item>
 <item name="colorPrimaryDark">@color/your_primary_dark_color</item>
 <item name="colorAccent">@color/your_accent_color</item>
 <item name="windowActionBar">false</item>
 <item name="android:windowActionBar">false</item>
 <item name="android:windowNoTitle">true</item>

并使用android.support.v7.widget.Toolbar 确保您使用的是支持库v21或更高版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM