Ícone de navegação Toolbar nunca se punha

? grunk @ | Original: StackOverFlow
---

Estou tentando o novo componente Toolbar e tendo alguns problemas com o ícone de navegação. Eu quero implementar um ícone personalizado para a navegação de volta :

Na minha manifesto i definir um pai para a minha actividade :

<activity android:name=".CardsActivity" android:parentActivityName=".MainActivity">
    <!-- Parent activity meta-data to support API level 7+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>

Declaro a barra de ferramentas como esta:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.lollitest.MainActivity" >

    <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:layout_marginBottom="10dp"
        android:background="?attr/colorPrimary" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/my_awesome_toolbar"
        android:text="@string/hello_world" />

</RelativeLayout>

Então, em minha atividade i configurar a barra de ferramentas como esta:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_good);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
setSupportActionBar(toolbar);

O que me dá :  Ícone de navegação Toolbar nunca se punha

O ícone de volta não é o único que eu definido com setNavigationIcon() ! Seja qual for drawable eu dou para o método no ícone de navegação é sempre a seta para trás .

Eu tentei remover a associação de pais no manifesto, mas o único efeito é (obviamente) para impedir que o botão para voltar.

No contrário, se eu quiser que o ícone de seta padrão para trás e não chamar de setNavigationIcon() eu não tenho qualquer ícone em tudo.

Qual é a maneira correta de lidar com o ícone de navegação na barra de ferramentas ( personalizado e padrão) ?

Nota: Eu estou correndo meu teste no Android 4.4

---

Top 5 Responder

1Gabriele Mariotti @

Atualmente você pode usá-lo, mudando a ordem: ( parece ser um bug)

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

toolbar.setNavigationIcon(R.drawable.ic_good);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
2user802421 @

Eu acho que você também precisa sincronizar o estado ActionBarDrawerToggle com o DrawerLayout .

// Taken from Android Studio generated NavDrawerFragment.setUp() method
mDrawerLayout.post(new Runnable() {
    @Override
    public void run() {
        mDrawerToggle.syncState();
    }
});

Eu preciso para executar o acima Runnable quando eu me escondo e reshow a alternância com getActionBar().setDisplayHomeAsUpEnabled(true / false); .

3Alexey Korolev @

( A resposta para user802421 )

private void setToolbar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        toolbar.setNavigationIcon(R.drawable.ic_action_back);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }
}

toolbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/toolbar_height"
    android:background="?attr/colorPrimaryDark" />