Détails:
J'étends ActionBarActivity.
Eclipse et SDK ont été entièrement corrigés à compter du 2011-11-06.
<uses-sdk Android:minSdkVersion="4" Android:targetSdkVersion="14" />
Déployé sur un appareil Samsung avec Android 2.3.3
L'application a Android:theme="@Android:style/Theme.Light"
Issue: L'application est légère, mais ActionBar est bleu avec des icônes grises, à peine visibles sur la couleur d'arrière-plan bleue. Je souhaite également que la barre d’action soit légère afin que les icônes grises soient plus visibles.
J'ai essayé de modifier les styles mais en vain.
Il me manque probablement quelque chose de trivial.
Comment changer la couleur d'arrière-plan du ActionBar d'un ActionBarActivity à l'aide de XML?
Selon documentation - "Vous pouvez contrôler les comportements et la visibilité de la barre d'action avec les API ActionBar, qui ont été ajoutées dans Android 3.0 (API de niveau 11)."
Ainsi, ActionBar ne fonctionnera pas pour votre environnement cible qui est au niveau 10 de l'API (Android 2.3.3).
Juste au cas où, si vous visiez un niveau d’API minimum de 11, vous pouvez modifier la couleur d’arrière-plan de ActionBar en définissant un style personnalisé, comme suit:
<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>
Et, définissez "MyTheme" comme thème d'application/d'activité.
Essaye ça
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
essaye ça:
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
Utilisez ceci - http://jgilfelt.github.io/Android-actionbarstylegenerator/
C'est un outil incroyable qui vous permet de personnaliser votre barre d'actions avec un aperçu en direct.
J'ai essayé les réponses précédentes mais j'ai toujours eu du mal à changer d'autres couleurs comme les onglets et les lettres et j'ai passé des heures à peaufiner les choses. Cet outil m'a aidé à terminer ma conception en quelques minutes.
Bonne chance! :)
J'ai eu le même problème, où ma barre d'action devenait gris lorsque j'ai entré ce code. Il est probable que votre feuille de style originale ressemble à ceci:
<style name="AppBaseTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
La "DarkActionBar" était ce qui gardait votre barre d’action grise. Je l'ai changé en ceci et cela a fonctionné:
<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>
J'ai également ajouté comment modifier la couleur du texte. En outre, pas besoin de changer quoi que ce soit autour des ressources.
-Garenne
Voir le Documentation officielle Android pour référence
Je construis une application avec minSdkVersion = "9"
et targetSdkVersion = "21"
J'ai changé la couleur de la barre d'action et cela fonctionne bien avec le niveau 9 de l'API
Voici un 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>
et définir la couleur de la barre d'action que vous voulez
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>
La couleur de la barre d’action peut également être définie dans le fichier .class
, l’extrait est
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
mais cela ne fonctionnera pas avec l’API <11 , de sorte que le style La barre d'action dans xml
est le seul moyen pour l'API <11
Direct ajouter cette ligne avec votre code de couleur
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#5e9c00")));
pas besoin de créer un objet ActionBar à chaque fois ...
Sur le Nexus 4, cela semble rendre la couleur grise.
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);
(tout le mérite de cet article, mais il est enfoui dans les commentaires, je voulais donc le faire apparaître ici) https://stackoverflow.com/a/17198657/1022454
essayez un code de ligne:
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
Utilisez le code ci-dessous pour attribuer une couleur différente au texte de la barre d’action et à l’arrière-plan de la barre d’action. Il suffit d’utiliser le thème ci-dessous dans Manifest par rapport à l’activité pour laquelle vous souhaitez générer le résultat :)
<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>
Voici comment vous pouvez changer la couleur de la barre d’action.
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);
}
}
}
Depuis votre MainActivity.Java, changez la couleur de la barre d’action de la manière suivante:
ActivityUtils.setActionBarColor(this, R.color.green_00c1c1);
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
Ce code peut être utile
<!-- 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>
Utilisez ce code ..pour modifier la couleur d'arrière-plan de la barre d'action. ouvrez "res/values / themes.xml" (s'il n'est pas présent, créez-le) et ajoutez
<?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>
Remarque: ce code fonctionne pour Android 3.0 et versions supérieures uniquement.
Cela a fonctionné pour moi, pour 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>
Utilisez ceci, cela fonctionnerait.
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));