Jak zmienić kolor tła paska ActionBar ActionBarActivity przy użyciu XML?

Szczegóły:

Przedłużam ActionBarActivity.
Eclipse i SDK w pełni załatane od 2011-11-06.
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />  

Wdrożony do urządzenia Samsung z Androidem 2.3.3
Aplikacja posiada android:theme="@android:style/Theme.Light"

Problem: aplikacja jest jasna, ale Pasek ActionBar jest niebieski z szarymi ikonami, słabo widoczny na niebieskim tle. Chcę również, aby Pasek działania był lekki, aby szare ikony były bardziej widoczne.

Próbowałem modyfikować style, ale nie / align = "left" /
Pewnie coś mi umyka.

Jak zmienić kolor tła paska ActionBar ActionBarActivity przy użyciu XML ?

Author: Jonik, 2011-11-06

20 answers

Zgodnie z Dokumentacja - " możesz kontrolować zachowanie i widoczność paska akcji za pomocą interfejsów API paska akcji, które zostały dodane w Androidzie 3.0(poziom API 11)."

Tak więc ActionBar nie będzie działał w docelowym środowisku, które znajduje się na poziomie API 10 (Android 2.3.3).

Na wszelki wypadek, jeśli ustawiasz na minimalnym poziomie API 11, możesz zmienić kolor tła paska ActionBar, definiując własny styl jako:

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

I ustaw" MyTheme " jako motyw aplikacji / aktywność.

 534
Author: lupchiazoem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 12:41:35

Spróbuj tego

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
 211
Author: coder_For_Life22,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 19:43:30

Spróbuj tego:

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
 126
Author: user2428604,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-09 13:06:20

Użyj tego - http://jgilfelt.github.io/android-actionbarstylegenerator/

To niesamowite narzędzie, które pozwala dostosować pasek akcji za pomocą Podglądu na żywo.

Próbowałem wcześniejszych odpowiedzi, ale zawsze miałem problemy ze zmianą innych kolorów, takich jak zakładki i litery i spędziłem godziny na poprawianiu rzeczy. To narzędzie pomogło mi wykonać projekt w ciągu zaledwie kilku minut.

Oto zrzut ekranu narzędzia

Wszystkiego najlepszego! :)

 70
Author: Mohammad Shabaz Moosa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 23:22:44

Miałem ten sam problem, gdzie mój pasek akcji zmieni kolor na szary po wpisaniu tego kodu. Możliwe, że twój oryginalny arkusz stylów wyglądał tak:

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

"DarkActionBar" był tym, co utrzymywało pasek akcji w szarym kolorze. Zmieniłem na to i zadziałało:

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

Dorzuciłem też jak edytować kolor tekstu. Ponadto, nie trzeba zmieniać niczego wokół zasobów.

-Warren

 57
Author: Warren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 03:43:19

Zachowanie Actionbar można również zmienić w interfejsach API

Zobacz oficjalna dokumentacja Androida dla odniesienia

Buduję aplikację z minSdkVersion = "9" i targetSdkVersion = "21" zmieniłem kolor paska akcji i działa dobrze z poziomem API 9

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

I ustaw żądany kolor actionbar

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>

Kolor Actionbar może być również zdefiniowany w pliku .class, snippet is

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

Ale to nie będzie działać z API , więc stylizacja actionbar w xml jest jedynym sposobem dla API

 39
Author: Apurva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Direct dodaj tę linię z kodem koloru

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

Nie trzeba za każdym razem tworzyć obiektu ActionBar...

 20
Author: CrazyMind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 11:29:39

Na Nexusie 4 ludzie wydaje się, że kolor staje się szary.

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

(cała zasługa tego posta, ale jest on pogrzebany w komentarzach, więc chciałem go tutaj znaleźć) https://stackoverflow.com/a/17198657/1022454

 15
Author: John Ballinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:34

Wypróbuj jeden kod liniowy:

getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
 14
Author: SANAT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 10:54:19

Użyj poniższego kodu, aby zapewnić inny kolor tekstu actionbar i tła ActionBar po prostu użyj poniższego motywu w manifeście przeciwko aktywności, w której chcesz wyjść:)

<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>
 7
Author: Android is everything for me,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 03:43:59

W ten sposób można zmienić kolor paska akcji.

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

Od Twojej głównej aktywności.java zmienia kolor paska akcji w ten sposób

    ActivityUtils.setActionBarColor(this, R.color.green_00c1c1);
 5
Author: Siddarth Kanted,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 09:00:49

Podczas przedłużania aktywności użyj następującego kodu

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

Podczas rozszerzania AppCompatActivity użyj następującego kodu

ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
 5
Author: arlo shie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-31 18:33:38

Ten kod może być pomocny

<!-- 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
Author: Qutbuddin Bohra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 03:44:21

Czasami ta opcja rzuca NullPointerException

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

Ale ta opcja działa dla mnie. Więc możesz spróbować tego.

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

Happy Coding

 2
Author: Shahadat Hossain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-04 03:54:58

Jeśli używasz androidx AppCompact. Użyj poniższego kodu.

androidx.appcompat.app.ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable("Color"));
 2
Author: Dinith Rukshan Kumara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-15 10:56:27

Użyj tego kodu .., aby zmienić kolor tła paska akcji. otwórz " res / values / themes.xml" (jeśli nie jest obecny, utwórz go) i dodaj

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

Uwaga: Ten kod działa tylko dla Androida 3.0 i wyższych wersji

 1
Author: Amey Bawiskar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 14:01:03

To działało dla mnie, dla 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>
 1
Author: Tejasvi Hegde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-28 18:07:18

Jest to bardzo proste dla tych, którzy używają API 21 lub więcej użyć tego kodu poniżej

Dla Dark ActionBar

<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:background">@color/colorDarkGrey</item>
</style>

For_LightActionBar

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.ActionBar">
    <item name="android:background">@color/colorDarkGrey</item>
</style>
 1
Author: nirazverma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Użyj tego, to zadziała.

ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
 0
Author: Pankaj Lilan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-24 05:19:16
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.TabColor)));

Kolor.plik xml:

<resources> <color name="TabColor">#11FF00</color> </resources>`
 -2
Author: Chandresh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-30 18:53:15