mostre o ícone na barra de ação / barra de ferramentas com AppCompat-v7 21


130

Eu tentei estes - 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 a barra de ferramentas personalizada - mas isso me forçaria a tocar em todos os layouts - existe uma maneira melhor de fazer isso?


1
Você pode adicionar sua classe de atividade, onde adicionou itens da barra de ação?
Harsha Vardhan

Respostas:


256
getSupportActionBar().setDisplayShowHomeEnabled(true);

junto com

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

7
Cuidado que getSupportActionBar()pode nulldepender do estilo da sua atividade.
Jlhonora # 15/15

2
ainda não está mostrando o ícone. eu usei getSupportActionBar (). setDisplayHomeAsUpEnabled (true); getSupportActionBar (). setIcon (R.drawable.ic_app_icon); getSupportActionBar (). setTitle ("Label");
Meenaxi 30/03

8
Por que o ícone aparece no meio da barra de título? Eu quero o ícone do lado esquerdo da barra de título. Por favor ajude .. Obrigado
Mohammad Rajob

1
@Meenaxi você deve usar setDisplayShowHomeEnabled (true); Que um fez o truque para mim
arniotaki

1
Observe que a configuração do ícone não o torna clicável. Se você estiver procurando por um ícone clicável, precisará usá .setHomeAsUpIndicator-lo e manipulá-lo no seu onOptionsItemSelected.
21719 Joshua Pinter

32

Nas modernas UIs do Android, os desenvolvedores devem se apoiar mais em um esquema de cores visualmente distinto para as barras de ferramentas do que no ícone do aplicativo. O uso do ícone do aplicativo e do título como um layout padrão é desencorajado em dispositivos API 21 e mais recentes.

Se você não concorda, pode tentar:

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 atividade:

@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.


1
Eu só quero ressaltar que atualmente a SettingsAtividade da Play Store tem o ícone do aplicativo na barra de ação. Isso ainda existe após a atualização do material.
Austyn Mahoney

17

Isso funcionou para mim:

    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

existem a muitos métodos desnecessários e não relacionadas com o ícone
user924

15

coisa mais simples de fazer; basta adicionar:

app:navigationIcon="@drawable/ic_action_navigation_menu">

ao <android.support.v7.widget.Toolbar tag

onde @drawable/ic_action_navigation_menué o nome do ícone


1
Funciona perfeitamente! Esta é a maneira correta e mais simples de adicionar o ícone de navegação na barra de ferramentas. Se você deseja verificar os cliques no ícone de navegação, pode verificar o android.R.id.homeID no seu onOptionsItemSelected(...).
Sazid

12

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

setIcon/setLogoO método só funcionará se você tiver definido DisplayOptions. Tente isto -

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

Você também pode definir opções para exibir LOGO (basta adicionar constante ActionBar.DISPLAY_USE_LOGO). Mais informações - displayOptions


6

Tente usar:

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

5
soou promissor - mas ainda não tem Ícone :-(
ligi

5

se você deseja definir o ícone inicial ou o verso (não o logotipo ou o ícone estático) para poder usar

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );

esta é a resposta correta, desde o surgimento de implantação e de comportamento
cutiko

só isso me deu uma aparência normal (tamanho, margens, deslocamento entre título e ícone), funciona bem mesmo com lançador de vetor ( .xml), como R.mipmap.ic_launcherouR.mipmap.ic_launcher_round
user924

e eu usei isso como ícone estático causa outras soluções logo / funciona feio
user924

5

Para a Barra de Ação:

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

Para a barra de ferramentas:

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

5
Não há diferença entre o código 2 do ActionBar e da Barra de Ferramentas. Isso é intencional?
King King

1
Para ActionBar deve ser: getActionBar (). SetDisplayHomeAsUpEnabled (true); getActionBar (). setHomeAsUpIndicator (R.drawable.ic_action_back);
Darsshan

Este é realmente o caminho a percorrer. Apenas usar setIconnão permite um botão clicável, onde setHomeAsUpIndicatore como manipular isso onOptionsItemSelectedfunciona. Obrigado!
Joshua Pinter

4
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

OU faça um layout XML chamar otool_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 atividade principal, adicione esta linha

 <include
     android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />

3

Se você não quiser definir sua barra de ferramentas como barra de ação usando setSupportActionBar , poderá adicionar um logotipo ao lado do ícone de navegação (se você tiver um botão voltar, por exemplo) assim:

toolbar.setLogo();

ou em xml

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

E mesmo se você tiver um título definido na Barra de Ferramentas, o título ainda será exibido.

Ex: a marca verde na imagem abaixo é o logotipo

Barra de ferramentas com ícone de navegação, logotipo e título


2

Tente o seguinte:

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


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

0

No Xamarin.Android, você pode usá-los:

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

usando Android.Support.V7.App.AppCompatActivity é necessário.


0

Tente isso. Para mim funcionou

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

0

No Kotlin, fiz o seguinte para mostrar apenas o ícone:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.