mostrar o ícone na barra de acções/barra de ferramentas com o AppCompat-v7 21

eu tentei isto - mas ainda não vejo o ícone como antes:

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

parece funcionar quando eu uso barra de ferramentas personalizada-mas isso me forçaria a tocar em todos os layouts-há uma maneira melhor de fazer isso?

Author: ligi, 2014-10-18

15 answers

getSupportActionBar().setDisplayShowHomeEnabled(true);

Juntamente com

getSupportActionBar().setIcon(R.drawable.ic_launcher);
 242
Author: nadavfima, 2018-01-08 13:23:42
Nos modernos Desenvolvedores Android UI devem se apoiar mais em um visualmente esquema de cores distinto para as barras de ferramentas do que no seu ícone de Aplicação. O o uso do ícone da aplicação mais o título como um layout padrão é desencorajado on API 21 devices and newer.

Se discordar pode tentar com:

Para criar a barra de ferramentas em 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" />

Na sua actividade:

@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);
}

Use o método setLogo () para definir o ícone. código fonte.

 31
Author: LordRaydenMK, 2014-10-18 14:44:52
Isto funcionou comigo.
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

Assim como:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
 14
Author: Michał K, 2014-11-13 07:32:09

A coisa mais simples a fazer; basta adicionar:

app:navigationIcon="@drawable/ic_action_navigation_menu">

Para a marca <android.support.v7.widget.Toolbar

Onde @drawable/ic_action_navigation_menu é o nome do ícone

 14
Author: Pila, 2016-06-17 08:50:41

Uma forma melhor de definir várias opções:

setIcon/setLogo o método só funcionará se tiver definido as opções para deslocar tente isto -

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

Também pode definir opções para mostrar o logótipo(basta adicionar constante ActionBar.DISPLAY_USE_LOGO). Mais informações - deslocamentos

 12
Author: Vintesh, 2014-12-12 11:40:16

Tente usar:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
 6
Author: Chris Banes, 2014-10-18 13:52:45

Se quiser definir o ícone home ou back (não o logótipo ou o ícone estático) para que possa usar

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
 5
Author: smoothumut, 2015-07-28 15:20:33
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

Ou faça uma disposição XML chamar o 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>

Agora na sua actividade principal adicione esta linha

 <include
     android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />
 4
Author: Skitty, 2017-09-30 13:27:54

Tenta isto:

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);

Para ícone estático

 2
Author: Odilon Cenamo, 2015-09-23 19:58:25

Para A Barra De Acção:

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

Para A Barra De Ferramentas:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
 2
Author: Peter Ivanov, 2016-06-21 09:23:09
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
Author: Hardik Vasani, 2017-06-07 12:45:11

Se não quiser definir a sua barra de ferramentas como barra de Acção usando a barra de apoio , poderá adicionar um logótipo ao lado do seu ícone de navegação (se tiver um botão de apoio, por exemplo) como este:

toolbar.setLogo();

Ou em xml

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

E mesmo que tenha um título definido na barra de ferramentas, o título irá aparecer à mesma.

Ex: o controlo a verde na imagem abaixo é o logótipo

Toolbar with navigation icon, logo and title

 1
Author: Malek Hijazi, 2017-08-29 20:42:54

Em Xamarin.Android você pode usar estes:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);
A Usar O Android.Suportar.V7.Aplicacao.A AppCompatActivity é necessária.
 0
Author: Daniele D., 2015-10-01 11:31:52
Experimenta isto. Para mim, funcionou.
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
 0
Author: Matteo, 2016-04-17 16:22:38

No Kotlin fiz o seguinte para mostrar o ícone:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
 0
Author: Leon, 2018-02-27 12:14:30