web-dev-qa-db-fra.com

Image d'arrière-plan ActionBar

J'ai hérité du thème Holo Light et personnalisé l'arrière-plan de l'ActionBar avec les éléments suivants:

Contenu de styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ActionBar" parent="@Android:style/Widget.Holo.ActionBar">
<item name="Android:background">@drawable/actionbar_background</item>
</style>
<style name="MyTheme" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionBarStyle">@style/ActionBar</item>
</style>
</resources>

Contenu de actionbar_background.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@raw/actionbar_background"
Android:tileMode="repeat" />

Au lieu d'être répétée, l'image est étirée, aucune idée de pourquoi Android: tileMode = "repeat" n'est pas appliquée?

Merci d'avance

44
rnoway

Ok, merci à Romain Guy sur # Android-dev IRC channel, c'est un bug connu sur honeycomb/Android 3.0 qui sera corrigé dans la prochaine version). Depuis lors, la seule solution est de le faire à partir du code, et ça marche :-)

 final ActionBar actionBar = getActionBar(); 
 BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.raw.actionbar_background)); 
 background.setTileModeX(Android.graphics.Shader.TileMode.REPEAT); 
 actionBar.setBackgroundDrawable(background);
43
rnoway
Drawable d=getResources().getDrawable(R.drawable.background_image_name);  
getActionBar().setBackgroundDrawable(d);

Le code ci-dessus définit l'image d'arrière-plan de la barre d'action.
J'espère que ça aide.

41
Raj Trivedi

Vous pouvez facilement faire cette chose. Si vous souhaitez modifier l'image d'arrière-plan de la barre d'actions, placez ce code dans votre fichier res/styles.xml.

 <style name="Theme.MyAppTheme" parent="@Android:style/Theme.Holo">
        <item name="Android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item>
    </style>

    <style name="Theme.MyAppTheme.ActionBar" parent="@Android:style/Widget.Holo.ActionBar">
        <item name="Android:background">@drawable/top_black_bg</item>
    </style>

Pour cela, vous devez sélectionner une image dans le dossier "dessinable". Ici, je sélectionne une image "tp_black_bg.png"

Après cela, n'oubliez pas de déclarer ce thème dans votre fichier AndroidManifest.xml

    <application
        .
        .
        .
        Android:theme="@style/Theme.MyAppTheme" >.............</application>

Vous pouvez maintenant rouvrir n'importe quel fichier de disposition XML, vous pouvez facilement voir l'effet. De la même manière, vous pouvez également modifier la couleur d'arrière-plan d'ActionBar.

Merci.

5
Satyaki Mukherjee
mActionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.navbar));
2
Naskov

Utilisez getSupportActionBar () à partir d'Android.support.v7 pour une compatibilité descendante.

2
Ron