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?
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">
Si vous voulez le faire en XML, vous pouvez utiliser ...
<Android.support.v7.widget.Toolbar
app:navigationIcon="?homeAsUpIndicator"
...
Appeler getSupportActionBar().setHomeButtonEnabled(true);
devrait quand même fonctionner, je pense, tant que vous avez déjà appelé setSupportActionBar(toolbar);
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() }
}
}
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.
<activity Android:name=".DetailActivity"
Android:parentActivityName=".MainActivity">
<meta-data
Android:name="Android.support.PARENT_ACTIVITY"
Android:value=".MainActivity" />
</activity>
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.
}