如何更改ActionBar标题的背景颜色?

时间:2013-07-17 11:41:23

标签: android android-actionbar android-styles

无论我如何修改样式,红色箭头指向的框的背景颜色都不会从背景中改变。

img

如何更改颜色?我的目标是4.0+而不关心4.0-设备和操作系统。

这是指向my styles.xml file的链接。抱歉,由于此项目属于NDA,我必须审核一些事项。

我尝试了很多东西,包括:

  • 更改android:background
  • 中的windowTitleBackgroundStyle
  • 更改android:background
  • 中的actionBarStyle
  • 更改android:background
  • 中的actionBarWidgetStyle
  • 更改android:actionBarItemBackground

这些都不起作用。该文本视图似乎始终坚持我的基本主题的android:background值,并且没有任何东西可以覆盖它。

我错过了什么或做错了什么?

4 个答案:

答案 0 :(得分:4)

你需要用windowBackground改变android:background

<style name="CCCBaseTheme" parent="@android:style/Theme.Holo">
    <item name="android:windowBackground">@color/nav_background</item>
    <item name="android:textColor">@color/text</item>

    <item name="android:actionBarStyle">@style/CCCWidgetActionBar</item>

</style>
希望这会有所帮助。

答案 1 :(得分:1)

你的xml文件有一个有趣的部分:

<!-- ActionBar -->
    <style name="CCCWidgetActionBar" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:background">@color/nav_background</item>
        <item name="android:textColor">@color/nav_text</item>
        <item name="android:titleTextStyle">@style/CCCWidgetActionBarTitle</item>
        <item name="android:textViewStyle">@style/CCCWidgetActionBarTitle</item>

        <item name="android:windowTitleStyle">@style/CCCWindowTitle</item>
        <item name="android:windowTitleBackgroundStyle">@style/CCCWindowTitleBackground</item>
        <item name="android:windowBackground">@color/nav_background</item>
    </style>

只需改变:

<item name="android:background">@color/nav_background</item>

通过

<item name="android:background">@color/pink</item>

或任何其他颜色。 对我来说很好。

答案 2 :(得分:1)

您可以自定义操作栏,并且无论您想要什么,都可以更改标题背景颜色。

请按照以下步骤操作:

只有这样才能使Custom Sherlock成为Title。

在App上为标题创建单独的xml文件。

该文件包含这样的内容..

在此自定义布局中,我们可以使用颜色代码更改背景颜色..

header_sherlock.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3"
android:background="#008000"
>

     <TextView
    android:id="@+id/header_tvleft"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="left"
    android:layout_marginTop="@dimen/margintop"
    android:clickable="true"
    android:paddingLeft="@dimen/layoutpaddingleft"
    android:text="Textview"
    android:textColor="#ffffff" 
    android:textSize="@dimen/header_leftbtn"
     /> 


 <TextView
    android:id="@+id/header_tvcenter"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:layout_marginTop="@dimen/margintop"
    android:layout_marginRight="@dimen/sherlockpaddingright"   
    android:layout_marginLeft="@dimen/sherlockpaddingleft"
    android:text="Textview"
    android:textColor="#ffffff"
    android:textStyle="bold"
    android:textSize="@dimen/header_title"
     />

    <TextView
    android:id="@+id/header_tvright"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="right"
    android:layout_marginTop="@dimen/margintop"
    android:clickable="true"
    android:paddingRight="@dimen/layoutpaddingright"
    android:text="Textview"
    android:textColor="#ffffff"
    android:textSize="@dimen/header_rightbtn"
     />

</LinearLayout>

对于MainActivity或您要添加标题的活动:

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    getSupportActionBar().setCustomView(R.layout.header_sherlock);
    header_tvleft = (TextView) findViewById(R.id.header_tvleft);
    header_tvleft.setText("LeftTitleName");
    header_tvcenter = (TextView) findViewById(R.id.header_tvcenter);
    header_tvcenter.setText("CenterTitleName");
    header_tvright = (TextView) findViewById(R.id.header_tvright);
    header_tvright.setText("RightTitleName");

尝试此方法..

答案 3 :(得分:0)

这是一个古老的问题,但我只是有完全相同的问题 - 对我来说问题是我有这个:

 <item name="android:actionBarItemBackground">@drawable/btn_dark</item>
 <item name="actionBarItemBackground">@drawable/btn_dark</item>

其中btn_dark是一个重复使用的drawable,用于为启用,按下和禁用状态定义颜色的通用按钮。它在较新的设备上运行良好,但在我的旧2.3手机上,我在标题上获得了灰色背景。

有趣的是,禁用状态(我将其设置为深灰色)在旧设备上应用于操作栏标题的背景。将禁用的颜色设置为透明是修复。