Barre d'outils icône de navigation n'a jamais mis

? grunk @ | Original: StackOverFlow

Je essaie le nouveau composant de la barre d'outils et un peu de difficulté avec l'icône de navigation . Je tiens à mettre en œuvre une icône personnalisée pour la navigation de retour :

À mon manifeste je ai mis un parent de mon activité :

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

Je déclare la barre d'outils comme ceci:

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

Puis dans mon activité je configure la barre d'outils comme ceci:

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

Ce qui me donne :  Barre d'outils icône de navigation n'a jamais mis

L' icône de retour ne est pas celui que je ai mis avec setNavigationIcon() ! Quel que soit étirable je donne à la méthode de l'icône de navigation est toujours la flèche de retour .

Je ai essayé de supprimer l'association de parent dans le manifeste, mais le seul effet est (évidemment) pour empêcher le bouton pour revenir en arrière.

Le contraire, si je veux la flèche de retour par défaut et ne appelez pas setNavigationIcon() Je ne ai pas du tout une icône .

Quelle est la manière correcte de traiter l'icône de navigation dans la barre d'outils ( coutume et par défaut) ?

NOTE: Je fais tourner mon test sur ​​Android 4.4



Top 5 Respuesta

1Gabriele Mariotti @

Actuellement, vous pouvez l'utiliser, de modifier l'ordre : ( il semble être 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 @

Je pense que vous avez aussi besoin de synchroniser l'état ActionBarDrawerToggle avec le DrawerLayout .

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

Je ai besoin d'exécuter ce qui précède Runnable quand je me cache et reshow la bascule avec «____» .

3Alexey Korolev @

( La réponse à user802421 )

getActionBar().setDisplayHomeAsUpEnabled(true / false);

toolbar.xml

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