java - Android SDK : Can't style ActionBar of support library

标签 java android mobile sdk

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

我有两个样式文件。这是值文件夹中的 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>

这个 Lollipop 样式来自values-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) Lollipop 设备拥有整洁的绿色操作栏和整洁的绿色状态栏。 b) 但在 4.4 上操作栏完全消失。

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

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

最小 SDK 设置为 15。

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

最佳答案

只需将这些设置为 value/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 或更高版本。

关于java - Android SDK : Can't style ActionBar of support library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924288/

相关文章:

html - 带有绝对/固定子项的父容器的自动高度

java - 使用 java 泛型迭代枚举值

java - Play Billing Library v1.0 订单状态

java - Servlet 继承以及全局对象创建和访问

android - 无法解析 Push : (? 的所有参数,?)

android - 如果 Activity 正在运行,则获取额外的 Intent

android - 如何在捕获交易之前使用 Paypal 轻松更新订单?

android - Google Play 特色图片下载

java - 如何创建可在整个应用程序中访问但同时请求特定的变量?

android - Firebase 任务尚未完成