【问题标题】:Change actionbar background and title color更改操作栏背景和标题颜色
【发布时间】:2015-05-18 04:31:29
【问题描述】:

我是 Android 开发新手。我正在使用的应用程序需要白色操作栏背景,并且标题应为黑色。我正在使用支持库以降低兼容性。

样式.xml

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
     <!-- Customize your theme here. -->
</style>

我该怎么做?

【问题讨论】:

标签: android android-actionbar android-xml android-styles


【解决方案1】:

样式:主要应用主题

<style name="MyAppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

    <item name="android:actionBarStyle">@style/CustomActionBarStyle</item>
  <!-- Support library compatibility -->  
    <item name="actionBarStyle">@style/CustomActionBarStyle</item>

</style>

设置文本和背景颜色的样式

<style name="CustomActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@color/white</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>

    <item name="background">@color/white</item>
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>

设置TextColor 提示:父必须@style/TextAppearance.AppCompat.Widget.ActionBar.Title

<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/action_bar_text_color</item>
</style>

有关更多信息,请参阅@Santosh Shinde 帖子中发布的链接

【讨论】:

    【解决方案2】:

    用这个来改变标题color

    ActionBar actionBar = getActionBar();
             actionBar.setTitle(Html
             .fromHtml("<font color='#ffffff'> Now playing </font>"));
    

    对于操作栏标题

    getActionBar().setBackgroundDrawable(
             new ColorDrawable(Color.rgb(0, 0, 0)));
    

    getActionBar().setBackgroundDrawable(
             new ColorDrawable(Color.parseColor("#000000")));
    

    【讨论】:

      【解决方案3】:

      试试这种风格:

      <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
          <item name="android:actionBarStyle">@style/ActionBar</item>
          <item name="android:buttonStyle">@style/Button</item>
          <item name="android:editTextStyle">@style/EditText</item>
          <item name="android:windowBackground">@android:color/black</item>
      </style>
      
      <style name="ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
          <item name="android:backgroundStacked">@color/core_other_light</item>
          <item name="android:backgroundSplit">@color/core_other</item>
          <item name="android:background">#00ff00</item>
      </style>
      

      您可以找到更多信息herehere

      【讨论】:

      • 谢谢,但我使用 min sdk as 9 时遇到错误
      • 将您的最小 sdk 级别更改为 11
      • 我的客户需要它是 9
      • 如果您使用 ActionBarCompat 库,则应使用相同的方法。唯一的区别是你应该改变 actionBarStyle(没有 android: 前缀)