web-dev-qa-db-fra.com

Barre d'outils - ajouter le bouton haut

J'essaie d'utiliser la barre d'outils au lieu de la barre d'actions, mais je ne peux pas comprendre comment ajouter le bouton haut pour revenir à l'activité précédente. Je n'ai trouvé aucune méthode qui puisse s'y rapporter. 

Comment puis-je ajouter le bouton haut?

17
Guilherme

Je suppose que ce que vous recherchez ressemble à ceci:

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Ou en cas d'utilisation dans Fragment:

Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail);
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Cela fera apparaître votre barre d’action à l’intérieur de votre barre d’outils, mais ne vous inquiétez pas, tout ira bien ensemble. La dernière chose que vous devez faire si vous ne voulez aucune ombre sous votre barre d’action ou son arrière-plan est de changer de thème dans vaules/styles.xml.

<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar">
24
Jan Omacka

Si vous voulez le faire en XML, vous pouvez utiliser ...

<Android.support.v7.widget.Toolbar
            app:navigationIcon="?homeAsUpIndicator"
            ...
7
gsysko

Appeler getSupportActionBar().setHomeButtonEnabled(true); devrait quand même fonctionner, je pense, tant que vous avez déjà appelé setSupportActionBar(toolbar);

1
stkent

Si vous vous demandez pourquoi le fait de cliquer sur le bouton haut ne fonctionne pas avec les fragments, vous devez également configurer un écouteur de navigation, sans savoir pourquoi Google ne l'a pas activé par défaut:

protected fun setupToolbar(toolbar: Toolbar) {
    (activity as AppCompatActivity).run {
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        toolbar.setNavigationOnClickListener { onBackPressed() }
    }
}
1
M. Reza Nasirloo

Dans le cas où l'activité précédente est toujours identique pour une activité, le bouton haut/retour peut être facilement réalisé à l'aide de l'attribut parentActivityName. Il peut être mentionné dans le fichier AndroidManifest.xml comme indiqué ci-dessous. Disons que DetailActivity a été ouvert à partir de MainActivity. Ainsi, lorsque vous êtes sur DetailActivity, la barre d'outils affichera automatiquement une flèche pointant vers la gauche. Lorsque nous cliquons sur la flèche pointant vers la gauche, MainActivity s'affiche.

 enter image description here

<activity Android:name=".DetailActivity"
            Android:parentActivityName=".MainActivity">
            <meta-data
                Android:name="Android.support.PARENT_ACTIVITY"
                Android:value=".MainActivity" />
        </activity>
0
RBT

Vous pouvez ajouter votre propre bouton "haut" dans la barre d'outils. Après tout, il ne s'agit que d'un ViewGroup.

Vous pouvez personnaliser la barre d’outils autant de fois que vous le souhaitez, dans votre fichier toolbar.xml ou partout où vous avez défini Android.support.v7.widget.Toolbar dans votre présentation, ajoutez votre bouton "haut" comme indiqué ci-dessous:

<Android.support.v7.widget.Toolbar
   xmlns:Android="http://schemas.Android.com/apk/res/Android"
   Android:id="@+id/toolbar"
   Android:minHeight="?attr/actionBarSize"
   Android:layout_height="?attr/actionBarSize"
   Android:background="@drawable/color_toolbar"
   Android:layout_width="match_parent">

   <ImageButton
       Android:id="@+id/upButton"
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       Android:onClick="uphandler"
       Android:src="@drawable/backbutton"
       Android:layout_gravity="end"/>

</Android.support.v7.widget.Toolbar>

Maintenant, définissez la fonction uphandler dans votre activité pour écouter ce bouton: 

public void uphandler(View v){
       this.finish();    // This will kill current activity, and if previous activity is still opened in background, it will come in front.
}
0
Abhinav Puri