web-dev-qa-db-fra.com

afficher l'icône dans la barre d'action/barre d'outils avec AppCompat-v7 21

J'ai essayé ces - mais ne vois toujours pas l'icône comme avant:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

Cela semble fonctionner lorsque j'utilise une barre d'outils personnalisée - mais cela me forcerait à toucher toutes les dispositions - y a-t-il une meilleure façon de le faire?

124
ligi
getSupportActionBar().setDisplayShowHomeEnabled(true);

de même que 

getSupportActionBar().setIcon(R.drawable.ic_launcher);
248
nadavfima

Dans les interfaces utilisateur Android modernes, les développeurs devraient s’appuyer davantage sur un visuel palette de couleurs distincte pour les barres d'outils que sur leur icône d'application. Le L'utilisation de l'icône de l'application et du titre comme modèle standard est déconseillée sur les appareils API 21 et plus récents.

Si vous n'êtes pas d'accord, vous pouvez essayer avec:

Pour créer la barre d'outils en XML:

<Android.support.v7.widget.Toolbar  
    Android:id="@+id/my_awesome_toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

Dans votre activité:

@Override
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

Utilisez la méthode setLogo () pour définir l’icône . Code source.

32
LordRaydenMK

Cela a fonctionné pour moi:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

aussi bien que:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
14
Michał K

chose la plus simple à faire; il suffit d'ajouter:

app:navigationIcon="@drawable/ic_action_navigation_menu">

à la balise <Android.support.v7.widget.Toolbar

@drawable/ic_action_navigation_menu est le nom de l'icône

14
Pila

Un meilleur moyen de définir plusieurs options: 

La méthode setIcon/setLogo ne fonctionnera que si vous avez défini DisplayOptions Essayez ceci -

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

Vous pouvez également définir des options pour afficher LOGO (ajoutez simplement ActionBar.DISPLAY_USE_LOGO constant). Plus d'informations - displayOptions

12
Vintesh

Essayez d'utiliser:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
6
Chris Banes

si vous souhaitez définir l’icône home ou back (pas le logo ou l’icône statique)

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
5
smoothumut
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

OUfaire une mise en page XML appeler le tool_bar.xml 

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:background="@color/colorPrimary"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark"
    Android:elevation="4dp">

    <RelativeLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">

    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@color/colorPrimary"
        Android:src="@drawable/ic_action_search"/>

    </RelativeLayout>
</Android.support.v7.widget.Toolbar>

Maintenant, dans votre activité principale, ajoutez cette ligne

 <include
     Android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />
4
Skitty

Essaye ça:

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

pour l'icône statique

2
Odilon Cenamo

Pour Actionbar:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

Pour la barre d'outils:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
2
Peter Ivanov
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}
1
Hardik Vasani

Si vous ne souhaitez pas définir votre barre d'outils en tant que barre d'action à l'aide de setSupportActionBar, vous pouvez ajouter un logo à côté de votre icône de navigation (si vous avez un bouton de retour, par exemple), comme ceci:

toolbar.setLogo();

ou en xml 

<Android.support.v7.widget.Toolbar 
    ....
    Android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

Et même si vous avez un titre défini sur la barre d’outils, le titre sera toujours affiché.

Ex: le coche vert dans l'image ci-dessous est le logo

 Toolbar with navigation icon, logo and title

1
Malek Hijazi

Essaye ça. Pour moi cela a fonctionné

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
0
Matteo

À Kotlin, j’ai fait ce qui suit pour montrer simplement l’icône:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
0
Leon

Dans Xamarin.Android, vous pouvez utiliser ceux-ci:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

utiliser Android.Support.V7.App.AppCompatActivity est requis.

0
Daniele D.