je crée une application Android dans laquelle le niveau de support api est 7, donc j'utilise sherlock Actionbar J'utilise le mode d'action dedans ..___ Le problème est que je veux changer l'arrière-plan du mode d'action. Donc j'ai essayé
<item name="Android:background">@color/something</item>
<item name="Android:backgroundStacked">@color/something</item>
<item name="Android:backgroundSplit">@color/something</item>
ces solutions de style sont disponibles mais aucune d'entre elles ne fonctionne. http://i43.tinypic.com/2nriic1.png
si vous voulez changer la couleur de ActionBar, procédez comme suit:
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
voir le lien suivant link pour plus d'informations
et si vous utilisez ActionMode C'est le style utilisé pour tout ActionMode. Vous devrez créer votre propre style pour le personnaliser
<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
plus d'infos dans ce site
voir ceci aussi
Modifier
pour pré-Honeycomb voir ceci s'il vous plaît
Dans mon cas, j'ai résolu avec cela. J'ai d'abord créé un style pour définir l'actionModeBackground:
<style name="MyTheme.ActionMode" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionModeBackground">#FFFFFF</item>
</style>
Ensuite, j'ajoute le style à mon thème d'application de base:
<style name="AppTheme" parent="AppBaseTheme">
<item name="Android:actionModeStyle">@style/MyTheme.ActionMode</item>
</style>
J'espère que ça aide!!!
Si vous utilisez simple Action Bar alors essayez ceci,
ActionBar abar = getActionBar();
abar.setBackgroundDrawable(new ColorDrawable(0xff123456));
Mais si vous utilisez Actionbar share lock lock Lib alors essayez ceci
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff123456));
ColorDrawable(0xff123456)
- devrait être votre code de couleur.
Drawable/styles.xml
<item name="Android:actionModeBackground">@drawable/actionbar_background</item>
<item name="actionModeBackground">@drawable/actionbar_background</item>
Changer de thème selon le niveau de l'API
Si vous voulez changer selon le niveau de l'API, vous devriez alors choisir this
Si vous voulez le faire par programme (prenant en charge AppCompat), vous devez rechercher une vue parent icône. Ce code est testé de 2.3.7 à 6.0.1. Vous devez vérifier les API inférieures ....
commencez par obtenir votre vue de décor d'activité
final ViewGroup decorView = (ViewGroup) getActivity().getWindow().getDecorView();
seconde définit la couleur dans onPrepareActionMode. Vous pouvez également définir l’icône de retour ou d’autres éléments ici
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu)
{
decorView.postDelayed(new Runnable() {
@Override
public void run()
{
int buttonId = getResources().getIdentifier("action_mode_close_button", "id", "Android");
View v = decorView.findViewById(buttonId);
if (v == null)
{
buttonId = R.id.action_mode_close_button;
v = decorView.findViewById(buttonId);
}
if (v != null)
{
((View)v.getParent()).setBackgroundColor(Color.red /*your color here*/);
}
}
}, 500);}
Remplacez ce style dans votre thème personnalisé:
<style name="Base.Widget.AppCompat.ActionMode" parent="">
<item name="background">?attr/actionModeBackground</item>
<item name="backgroundSplit">?attr/actionModeSplitBackground</item>
<item name="height">?attr/actionBarSize</item>
<item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Title</item>
<item name="subtitleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Subtitle</item>
<item name="closeItemLayout">@layout/abc_action_mode_close_item_material</item>
</style>
Par exemple:
<style name="LywActionMode" parent="Base.Widget.AppCompat.ActionMode">
<item name="background">@color/lyw_primary_color</item>
<item name="backgroundSplit">@color/lyw_primary_color</item>
</style>
<style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="actionModeStyle">@style/LywActionMode</item>
</style>
Le moyen le plus simple de le faire
ActionBarContextView actionBar = getWindow().getDecorView().findViewById(R.id.action_mode_bar);
actionBar.setBackgroundColor(WhateverColorYouWant);
C'est le style utilisé pour n'importe quel ActionMode, je l'ai extrait du SDK. Vous devrez créer votre propre style pour le personnaliser. C'est vraiment facile à faire. Si vous n'avez jamais rien fait de tel auparavant, vous devriez lire cet article sur la personnalisation de la barre d'actions. Cela explique tout ce que vous devez savoir.
<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
Pour ceux qui éprouvent encore des difficultés et qu'aucune des solutions existantes ne résout, assurez-vous que, dans votre présentation avec la barre d'outils, vous avez ceci:
app:popupTheme="@style/Theme.ToolBar"
Android:popupTheme="@style/Theme.ToolBar"
et vous n'avez pas
app:theme="@style/Theme.ToolBar"
Car ils vont créer un conflit et votre personnalisation ne fonctionnera pas.
Je veux rendre plus claire cette réponse. Créez d'abord un arrière-plan personnalisé "storage_list_header_shape.xml" dans votre dossier pouvant être dessiné.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<gradient
Android:angle="270"
Android:startColor="@Android:color/holo_orange_light"
Android:centerColor="@Android:color/holo_orange_dark"
Android:endColor="@Android:color/holo_orange_light" />
<size Android:height="3dp" />
</shape>
Deuxièmement, créez un style personnalisé dans votre style.xml
<style name="customActionModeTheme" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionModeBackground">@drawable/storage_list_header_shape</item>
</style>
Troisièmement, appelez le style dans votre manifeste.
<activity
Android:name="com.javacafe.activities.Main"
Android:launchMode="singleTop"
Android:screenOrientation="sensorLandscape"
Android:theme="@style/customActionModeTheme" >
</activity>