web-dev-qa-db-ger.com

Wie ändere ich die Hintergrundfarbe der ActionBar einer ActionBarActivity mithilfe von XML?

Einzelheiten:

Ich erweitere ActionBarActivity.
Eclipse und SDK sind seit dem 06.11.2011 vollständig gepatcht.

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

Bereitstellung auf einem Samsung-Gerät mit Android 2.3.3
Anwendung hat Android:theme="@Android:style/Theme.Light"

Issue: Die Anwendung ist hell, aber ActionBar ist blau mit grauen Symbolen, die vor dem blauen Hintergrund kaum sichtbar sind. Ich möchte auch, dass die ActionBar hell ist, damit die grauen Symbole besser sichtbar sind.

Ich habe versucht, die Stile zu ändern, aber ohne Erfolg.
Mir fehlt wahrscheinlich etwas Triviales.

Wie ändere ich die Hintergrundfarbe der ActionBar einer ActionBarActivity mithilfe von XML?

264
user77115

Gemäß Dokumentation - "Sie können das Verhalten und die Sichtbarkeit der Aktionsleiste mit den ActionBar-APIs steuern, die in Android 3.0 (API-Ebene 11) hinzugefügt wurden."

Daher funktioniert ActionBar nicht für Ihre Zielumgebung mit API-Level 10 (Android 2.3.3).

Nur für den Fall, dass Sie die Mindest-API-Stufe 11 anstreben, können Sie die Hintergrundfarbe von ActionBar ändern, indem Sie den benutzerdefinierten Stil wie folgt definieren:

<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>

Stellen Sie "MyTheme" als Thema für die Anwendung/Aktivität ein.

508
lupchiazoem

Versuche dies

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

versuche dies:

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

Verwenden Sie dazu - http://jgilfelt.github.io/Android-actionbarstylegenerator/

Es ist ein erstaunliches Werkzeug, mit dem Sie Ihre Aktionsleiste mit einer Live-Vorschau anpassen können.

Ich habe die früheren Antworten ausprobiert, hatte jedoch immer Probleme, andere Farben wie Tabulatoren und Buchstaben zu ändern, und verbrachte Stunden damit, Dinge zu optimieren. Mit diesem Tool konnte ich mein Design in nur wenigen Minuten fertigstellen.

Here's a screenshot of the tool

Alles Gute! :)

69

Ich hatte das gleiche Problem, bei dem meine Aktionsleiste bei der Eingabe dieses Codes grau wird. Wahrscheinlich sah Ihr ursprüngliches Stylesheet folgendermaßen aus:

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

Die "DarkActionBar" hat Ihre Aktionsleiste grau gehalten. Ich habe es in dieses geändert und es hat funktioniert:

<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>    

Ich habe auch überlegt, wie man die Textfarbe bearbeitet. Sie müssen auch nichts an den Ressourcen ändern.

-Labyrinth

55
Warren

Das Verhalten der Aktionsleiste kann auch in APIs <11 geändert werden.

Siehe Android Official Documentation als Referenz

Ich erstelle eine App mit minSdkVersion = "9" und targetSdkVersion = "21". Ich habe die Farbe der Aktionsleiste geändert und es funktioniert mit API Level 9 .

Hier ist eine 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>

und legen Sie die gewünschte Farbe der Aktionsleiste fest

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>

Die Farbe der Aktionsleiste kann auch in der .class -Datei definiert werden. Dies ist das Snippet

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

aber dieses funktioniert nicht mit der API <11 , so dass das Aktionsleiste in xml ist nur Weg für API <11

38
Apurva

Direkt diese Zeile mit Ihrem Farbcode hinzufügen

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

muss nicht jedes Mal ein ActionBar-Objekt erstellen ...

19
CrazyMind

Beim Nexus 4 scheint die Farbe dadurch grau zu werden.

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);

(Diesem Beitrag wird alles gutgeschrieben, aber er ist in den Kommentaren vergraben, daher wollte ich ihn hier auftauchen lassen.) https://stackoverflow.com/a/17198657/1022454

15
John Ballinger

versuchen Sie einen Zeilencode:

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

Verwenden Sie den folgenden Code, um dem Text der Aktionsleiste und dem Hintergrund der Aktionsleiste eine andere Farbe zu verleihen.

<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>

So können Sie die Farbe der Aktionsleiste ändern.

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);
    }
}
}

Ändern Sie in MainActivity.Java die Farbe der Aktionsleiste wie folgt

    ActivityUtils.setActionBarColor(this, R.color.green_00c1c1);
5
Siddarth Kanted

Wenn Sie die Aktivität erweitern, verwenden Sie folgenden Code

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

Verwenden Sie beim Erweitern von AppCompatActivity den folgenden Code

ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
4
arlo shie

Dieser Code kann hilfreich sein

<!-- 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>
2
Qutbuddin Bohra

Verwenden Sie diesen Code, um die Hintergrundfarbe der Aktionsleiste zu ändern. öffne "res/values ​​/ themes.xml" (falls nicht vorhanden, erstelle es) und füge hinzu

<?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>

Hinweis: Dieser Code funktioniert nur für Android 3.0 und höhere Versionen

1
Amey Bawiskar

Dies funktionierte für mich, für AppCompatActivity,

    <item name="actionBarStyle">@style/BlackActionBar</item>
</style>

<style name="BlackActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="background">@Android:color/black</item>
    <item name="titleTextStyle">@style/BlackActionBarTitleTextStyle</item>
</style>

<style name="BlackActionBarTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="Android:textColor">@Android:color/white</item>
    <item name="Android:fontFamily">@font/cinzel_decorative</item>
</style>
0
Tejasvi Hegde

Verwenden Sie dies, es würde funktionieren.

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