Icona di navigazione Toolbar mai impostato

? grunk @ | Original: StackOverFlow
---

Sto provando il nuovo componente Toolbar e avendo qualche problema con l'icona di navigazione . Voglio realizzare un'icona personalizzata per la navigazione indietro :

Nel mio manifesto ho impostato un genitore per la mia attività :

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

Dichiaro la barra degli strumenti in questo modo :

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

Poi nella mia attività ho configurare la barra strumenti come questo:

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

Il che mi dà :  Icona di navigazione Toolbar mai impostato

L'icona di nuovo non è quello che ho impostato con setNavigationIcon() ! Qualunque disegnabile Vi do il metodo l'icona di navigazione è sempre la freccia indietro .

Ho provato a rimuovere l'associazione genitori nel manifesto, ma l' unico effetto è (ovviamente ) per evitare che il pulsante per tornare indietro .

Al contrario se voglio la freccia icona predefinita indietro e non chiamare setNavigationIcon() Non ho alcuna icona a tutti .

Qual è il modo corretto di gestire la navigazione icona nella barra strumenti ( su misura e di default ) ?

Nota : Io corro la mia prova su Android 4.4

---

Top 5 Risposta

1Gabriele Mariotti @

Attualmente è possibile utilizzarlo, cambiando l'ordine : ( sembra essere un 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 @

Penso che è anche necessario per sincronizzare lo stato ActionBarDrawerToggle con il DrawerLayout .

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

Ho bisogno di eseguire il sopra Runnable quando mi nascondo e reshow la ginocchiera con getActionBar().setDisplayHomeAsUpEnabled(true / false); .

3Alexey Korolev @

( La risposta a 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" />