Как изменить цвет фона ActionBar ActionBarActivity с помощью XML?

Подробнее:

Я расширяю ActionBarActivity.
Eclipse и SDK полностью исправлены по состоянию на 2011-11-06.

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />  

Развернуто на устройство Samsung с Android 2.3.3
Приложение имеет android:theme="@android:style/Theme.Light"

Проблема: приложение светлое, но ActionBar синее с серыми значками, едва видимыми на фоне синего цвета. Я также хочу, чтобы ActionBar был светлым, поэтому серые значки более заметны.

Я пробовал модифицировать стили, но безрезультатно.
Я, вероятно, пропустил что-то тривиальное.

Как изменить цвет фона ActionBar ActionBarActivity с помощью XML?

Ответ 1

Согласно documentation -" Вы можете контролировать поведение и видимость панели действий с помощью API ActionBar, которые были добавлены в Android 3.0 ( API уровня 11).

Итак, ActionBar не будет работать для вашей целевой среды, которая находится на уровне API 10 (Android 2.3.3).

На всякий случай, если вы нацелитесь на минимальный уровень API 11, вы можете изменить цвет фона ActionBar, указав собственный стиль, например:

<resources>
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">ANY_HEX_COLOR_CODE</item>
    </style>
</resources>

И, установите "MyTheme" в качестве темы для приложения/активности.

Надеюсь, что это поможет...

Ответ 2

Попробуйте это

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));

Ответ 3

попробуйте следующее:

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));

Ответ 4

Используйте это - http://jgilfelt.github.io/android-actionbarstylegenerator/

Его удивительный инструмент, который позволяет настраивать панель действий с предварительным просмотром в реальном времени.

Я попробовал более ранние ответы, но всегда имел проблемы с изменением других цветов, таких как вкладки и буквы, и часами, настраивающими вещи. Этот инструмент помог мне получить мой дизайн всего за пару минут.

Here's a screenshot of the tool

Все самое лучшее!:)

Ответ 5

У меня была такая же проблема, когда моя панель действий стала серым, когда я ввел этот код. Скорее всего, ваша оригинальная таблица стилей выглядела так:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- API 14 theme customizations can go here. -->
</style>

"DarkActionBar" - это то, что удерживало вашу панель действий серой. Я изменил его на это, и он сработал:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
    <!-- API 14 theme customizations can go here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">#2aa4cd</item>
    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item>
</style>        

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">#FFFFFF</item>
</style>    

Я также добавил, как редактировать цвет текста. Кроме того, нет необходимости изменять что-либо, окружающее ресурсы.

-Warren

Ответ 6

Поведение панели действий также может быть изменено в API < 11

Обратитесь к Официальной документации Android для справки

Я создаю приложение с minSdkVersion = "9" и targetSdkVersion = "21". Я изменил цвет панели действий, и он отлично работает с уровнем API 9

Вот 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">@color/actionbar_background</item>

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

и установите цвет требуемой панели действий

res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="actionbar_background">#fff</color> //write the color you want here
</resources>

Цвет панели действий также может быть определен в файле .class, фрагмент

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));

но этот не будет работать с помощью API < 11, поэтому стиль панели действий в xml является только способом для API < 11

Ответ 7

На Nexus 4 человека кажется, что цвет становится серым.

ActionBar bar = getActionBar(); // or MainActivity.getInstance().getActionBar()
bar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
bar.setDisplayShowTitleEnabled(false);  // required to force redraw, without, gray color
bar.setDisplayShowTitleEnabled(true);

(весь кредит на этот пост, но он похоронен в комментариях, поэтому я хотел его нарисовать здесь) fooobar.com/questions/28386/...

Ответ 8

Прямо добавьте эту строку с цветовым кодом

getSupportActionBar().setBackgroundDrawable(
    new ColorDrawable(Color.parseColor("#5e9c00")));

не нужно создавать объект ActionBar каждый раз...

Ответ 9

попробуйте один код строки:

getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));

Ответ 10

Используйте нижеприведенный код, чтобы предоставить другой цвет для текста панели действий и фона панели действий просто используйте ниже тему в манифесте против активности, в которой вы хотите вывести:)

<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/TitleBarTextColor</item>
    <item name="android:background">YOUR_COLOR_CODE</item>
</style>

<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">YOUR_COLOR_CODE</item>
</style>

Ответ 11

Этот код может быть полезен

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- customize the color palette -->
    <item name="colorPrimary">@color/material_blue_500</item>
    <item name="colorPrimaryDark">@color/material_blue_700</item>
    <item name="colorAccent">@color/material_blue_500</item>
    <item name="colorControlNormal">@color/black</item>

</style>
<style name="CardViewStyle" parent="CardView.Light">
    <item name="android:state_pressed">@color/material_blue_700</item>
    <item name="android:state_focused">@color/material_blue_700</item>
    <!--<item name="android:background">?android:attr/selectableItemBackground</item>-->
</style>

Ответ 12

Вот как вы можете изменить цвет панели действий.

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;


public class ActivityUtils {

public static void setActionBarColor(AppCompatActivity appCompatActivity, int colorId){
    ActionBar actionBar = appCompatActivity.getSupportActionBar();
    ColorDrawable colorDrawable = new ColorDrawable(getColor(appCompatActivity, colorId));
    actionBar.setBackgroundDrawable(colorDrawable);
}

public static final int getColor(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompat.getColor(context, id);
    } else {
        return context.getResources().getColor(id);
    }
}
}

Из вашего MainActivity.java измените цвет панели действий следующим образом

    ActivityUtils.setActionBarColor(this, R.color.green_00c1c1);

Ответ 13

Используйте этот код.., чтобы изменить цвет фона панели действий. открыть "res/values ​​/themes.xml" (если нет, создать его) и добавьте

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
       parent="@android:style/Theme.Holo.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/actionbar_background</item>
</style>

Примечание: этот код работает только для версий Android 3.0 и более поздних версий

Ответ 14

Используйте это, это сработает.

ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));

Ответ 15

getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.TabColor)));

color.xml файл:

<resources> <color name="TabColor">#11FF00</color> </resources>`