无法在Android应用中自定义AppTheme for action bar

时间:2015-03-04 20:18:30

标签: android android-theme

我正在尝试自定义操作栏。我之前也做过,但我现在无法做到。不知道我哪里出错了。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/actionbar_gradient</item>
</style>

这是我正在添加的可绘制

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="270"
        android:startColor="#d6ece542"
        android:endColor="#fffffdf4"
        />
</shape>

我还在我的清单中添加了<application>标记:

android:theme="@style/AppTheme"

但每次我只是得到相同的动作栏(主题的默认值)。有人能说出什么问题吗?

另外,我的minSdk版本= 18,目标版本= 21

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试将Holo操作栏主题应用于Material AppCompat主题。

一种解决方案是将渐变应用为colorPrimary

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@drawable/actionbar_gradient</item>
</style>

更多自定义属性:https://developer.android.com/training/material/theme.html#StatusBar

另一种解决方案是切换到Holo主题:

  1. 将您的活动更改为extends Activity
  2. 将您的父主题更改为@android:style/Theme.Holo.Light.DarkActionBar

答案 1 :(得分:0)

您可能需要将android:type="linear"添加到该渐变定义

<gradient
    android:angle="270"
    android:startColor="#d6ece542"
    android:endColor="#fffffdf4"
    android:type="linear"
    />