无法自定义ActionBar

时间:2014-09-19 11:22:04

标签: android android-actionbar

我正在developer.android.com上学习文档,在课程“设置操作栏的样式”,我遇到了问题。我需要更改ActionBar的背景,为here。我使用Android Action Bar Style Generator生成所有图像(用于背景,按钮等),并将结果添加到我的项目的res / dir中。
它看起来像这样: enter image description here

我手动添加了文件res / values / themes.xml,因为它在创建项目后不存在。 这是res / values / themes.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <!--<item name="android:actionBarStyle">@style/MyActionBar</item>-->

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/ab_solid_example</item>

        <!-- Support library compatibility -->
        <item name="background">@drawable/ab_solid_example</item>
    </style>
</resources>

为了应用这个主题,我添加了

  

机器人:主题= “@风格/ CustomActionBarTheme”

用于应用程序,以及AndroidManifest.xml中的2个活动。以下是AndroidManifest.xml的代码:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomActionBarTheme" >
    <activity
        android:name="com.example.mysecondapp.app.MainActivity"
        android:label="@string/app_name"
        android:theme="@style/CustomActionBarTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.mysecondapp.app.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.mysecondapp.app.MainActivity"
        android:theme="@style/CustomActionBarTheme">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.mysecondapp.app.MainActivity" />
    </activity>
</application>

但是,结果背景没有变化。 预览:

enter image description here

如果我在模拟器上运行此应用程序,也没有任何反应。

有谁知道如何修复它?

2 个答案:

答案 0 :(得分:1)

你应该尝试这样的事情

为我工作好

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


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

答案 1 :(得分:0)

试试这段代码:

ActionBar bar = getActionBar(); // or MainActivity.getInstance().getActionBar()
bar.setBackgroundDrawable(new ColorDrawable("YOUR COLOR"));

无需使用Action Bar的样式。这是你能做的最简单的事情。