web-dev-qa-db-fra.com

Android: Comment changer l'icône "Action" de la barre Action pour qu'elle soit autre chose que l'icône de l'application?

L'icône principale de mon application est composée de deux parties dans une image: un logo et quelques lettres en dessous. Cela fonctionne bien pour l'icône du lanceur de l'application, mais lorsque l'icône apparaît sur le bord gauche de la barre des tâches, les lettres sont coupées et le résultat n'est pas esthétique.

Je souhaite fournir à la barre d’action une version distincte de l’icône, avec uniquement la partie "logo" et non les lettres en dessous, mais elle est restée vide jusqu'à présent. Honnêtement, je ne trouve aucune réponse à cette question et je ne trouve même pas la question elle-même.

111
Phil Ringsmuth

La barre d'action utilisera l'attribut Android: logo de votre manifeste, s'il en existe un. Cela vous permet d'utiliser des ressources déductibles distinctes pour l'icône (Launcher) et le logo (ActionBar, entre autres).

218
Joe

Dans AndroidManifest.xml:

<application
    Android:icon="@drawable/launcher"
    Android:label="@string/app_name"
    Android:name="com..."
    Android:theme="@style/Theme">...</Application>

Dans styles.xml: (voir Android:icon)

<style name="Theme" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@Android:style/Widget.Holo.Light.ActionBar">
    <item name="Android:icon">@drawable/icon</item>
</style>
48
AlikElzin-kilaka

S'il vous plaît essayer cette ligne

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow);
14
TheLastSummer

Si vous utilisez AppCompat, le seul moyen de définir l'icône ActionBar sur les périphériques exécutant Gingerbread (API 10) ou une version antérieure consiste à définir l'attribut Android: icon dans chaque activité de votre manifeste ou de définir le programme à dessiner.

<manifest>
    <application>
        ...
        <activity Android:name="com.your.ActivityName"
            ...
            Android:icon="@drawable/ab_logo"/>
        ...
   </application>
</manifest>

Mise à jour: soyez averti cependant que l'icône de l'application sera remplacée si vous définissez l'attribut Android: icon sur l'activité de lancement. Le seul travail que je connaisse consiste à avoir une activité splash ou factice qui lance ensuite votre activité principale.

8
TheIT

Inspiré par TheIT, cela vient de fonctionner en manipulant le fichier manifeste mais d'une manière légèrement différente. Définissez l'icône dans les paramètres de l'application de manière à ce que la majorité des activités obtiennent l'icône. Dans l'activité pour laquelle vous souhaitez afficher le logo, ajoutez l'attribut Android: logo à la déclaration d'activité. Dans l'exemple suivant, seul LogoActivity devrait avoir le logo, tandis que les autres utiliseront par défaut l'icône.

<application
    Android:name="com.your.app"
    Android:icon="@drawable/your_icon"
    Android:label="@string/app_name">

    <activity
        Android:name="com.your.app.LogoActivity"
        Android:logo="@drawable/your_logo"
        Android:label="Logo Activity" >

    <activity
        Android:name="com.your.app.IconActivity1"
        Android:label="Icon Activity 1" >

    <activity
        Android:name="com.your.app.IconActivity2"
        Android:label="Icon Activity 2" >

</application>

J'espère que cela aide quelqu'un d'autre à sortir!

7
proudgeekdad

créer un logo

dans les dossiers "drawable-...", créez dans chacun d'eux logo.png. L'emplacement des dossiers: [YOUR APP]\app\src\main\res

Dans AndroidManifest.xml, ajoutez la ligne suivante: Android:logo="@drawable/logo"

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:logo="@drawable/logo"
    ...

c'est ça.

3
awariat

S'il vous plaît essayez, si utilisation "étend AppCompatActivity" et présente actionbar.

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}
2
Mustafa

Peut-être voulez-vous vérifier cela, vous avez tout ce dont vous avez besoin pour vos icônes d'applications

http://developer.Android.com/guide/practices/ui_guidelines/icon_design.html

mettre à jour

Je pense que par défaut, il utilise votre icône de lanceur ... Votre meilleur pari est de créer une image distincte ... Conçu pour la barre d'action et l'utiliser. Pour cette vérification: http://developer.Android.com/guide/topics/ui/actionbar.html#ActionItems

0
Stevanicus