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?
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.
Versuche dies
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
versuche dies:
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
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.
Alles Gute! :)
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
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
Direkt diese Zeile mit Ihrem Farbcode hinzufügen
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#5e9c00")));
muss nicht jedes Mal ein ActionBar-Objekt erstellen ...
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
versuchen Sie einen Zeilencode:
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
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);
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
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>
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
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>
Verwenden Sie dies, es würde funktionieren.
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));