Je migre de ActionBar
vers Toolbar
dans ma candidature. Mais je ne sais pas comment afficher et définir l'événement de clic sur la flèche arrière Toolbar
comme je l'ai fait Actionbar
.
Avec ActionBar
, j'appelle mActionbar.setDisplayHomeAsUpEnabled(true)
. Mais il n'y a pas de méthode similaire comme celle-ci.
Quelqu'un a-t-il déjà fait face à cette situation et trouvé une manière de la résoudre?
Réponses:
Si vous utilisez un,
ActionBarActivity
vous pouvez dire à Android d'utiliserToolbar
leActionBar
comme suit:Et puis appelle à
marchera. Vous pouvez également l'utiliser dans les fragments qui vous sont attachés,
ActionBarActivities
vous pouvez l'utiliser comme ceci:Si vous n'utilisez pas
ActionBarActivities
ou si vous souhaitez obtenir la flèche de retour sur unToolbar
qui n'est pas défini comme votre,SupportActionBar
vous pouvez utiliser ce qui suit:Si vous utilisez
android.support.v7.widget.Toolbar
, vous devez ajouter le code suivant à votreAppCompatActivity
:la source
R.drawable.abc_ic_ab_back_mtrl_am_alpha
autreR.drawable.ic_action_back
.toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Je vois beaucoup de réponses mais voici la mienne qui n'est pas mentionnée auparavant. Cela fonctionne à partir d'API 8+.
la source
onOptionItemSelected()
This complète ce que MrEngineer13 n'a pas couvert dans sa réponse.Il existe de nombreuses façons d'y parvenir, voici ma préférée:
Disposition:
Activité:
la source
setNavigationOnClickListener()
vous pouvez ajoutercase android.R.id.home:
à l'intérieur «onOptionsItemSelected ()».case android.R.id.home
n'a pas fonctionné pour moi. donc après une recherche pendant un certain temps, votre réponse a fait l'affaire .. merci.vous pouvez utiliser la méthode setNavigationIcon de la barre d'outils. Android Doc
la source
setNavigationOnClickListener()
a été ajoutée dans le niveau 21 et supérieur de l'Si vous ne voulez pas créer de personnalisé
Toolbar
, vous pouvez faire comme çaEn toi
AndroidManifest.xml
vous pouvez également le mettre
android:theme="@style/Theme.AppCompat.Light"
sur le<aplication>
tag, pour l'appliquer à toutes les activitésla source
if (item.getItemId() == android.R.id.home)
Et pour API 21+
android:navigationIcon
la source
J'ai utilisé cette méthode dans la documentation pour les développeurs Google :
Si vous obtenez une exception de pointeur nul, cela peut dépendre du thème. Essayez d'utiliser un thème différent dans le manifeste ou utilisez-le alternativement:
Puis dans le manifeste, où j'ai défini l'activité parent pour l'activité actuelle:
J'espère que cela t'aidera!
la source
getSupportActionBar()
travail. Merci!Si vous étiez utilisez
AppCompatActivity
et vous êtes allé sur le chemin de ne pas l' utiliser, parce que vous vouliez pas obtenir le automatiqueActionBar
qu'il fournit, parce que vous voulez séparer leToolbar
, en raison de vos besoins de conception des matériaux etCoordinatorLayout
ouAppBarLayout
, alors, considérez ceci:Vous pouvez toujours utiliser le
AppCompatActivity
, vous n'avez pas besoin d'arrêter de l'utiliser pour pouvoir utiliser un<android.support.v7.widget.Toolbar>
dans votre xml. Désactivez simplement le style de barre d'action comme suit:Tout d'abord, dérivez un style de l'un des thèmes NoActionBar que vous aimez dans votre
styles.xml
, j'ai utiliséTheme.AppCompat.Light.NoActionBar
comme ceci:Dans le manifeste de votre application, choisissez le thème de style enfant que vous venez de définir, comme suit:
Dans votre Activity Xml, si la barre d'outils est définie comme suit:
Ensuite, et c'est la partie importante, vous définissez la barre d'actions de support sur l'AppCompatActivity que vous étendez, de sorte que la barre d'outils de votre XML devienne la barre d'actions. Je pense que c'est une meilleure façon, car vous pouvez simplement faire les nombreuses choses qu'ActionBar permet, comme les menus, le titre d'activité automatique, la gestion de la sélection des éléments, etc. sans recourir à l'ajout de gestionnaires de clics personnalisés, etc.
Dans la substitution onCreate de votre activité, procédez comme suit:
la source
la source
Un moyen simple et facile d'afficher le bouton de retour sur la barre d'outils
Collez ce code dans la méthode onCreate
Collez cette méthode de remplacement en dehors de la méthode onCreate
la source
A Kotlin, ce serait
la source
Vous pouvez facilement le faire.
Crédits: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
la source
Dans le
AppCompatActivity
par exemple, vous pouvez fairela source
Dans votre fichier manifeste pour l'activité où vous souhaitez ajouter un bouton de retour, nous utiliserons la propriété android: parentActivityName
PS Cet attribut a été introduit dans l'API niveau 16.
la source
Cela a parfaitement fonctionné
la source
Tout d'abord, vous devez initialiser la barre d'outils:
puis appelez le bouton de retour dans la barre d'actions:
la source
Si vous souhaitez obtenir la flèche de retour sur une barre d'outils qui n'est pas définie en tant que SupportActionBar:
(kotlin)
pour obtenir des res à partir des attributs:
la source
Ajoutez ceci au xml de l'activité dans le dossier de disposition:
Rendez la barre d'outils cliquable, ajoutez-les à la méthode onCreate:
la source
Peut-être un moyen plus fiable d'obtenir l'icône en haut de votre thème (si vous n'utilisez pas la barre d'outils comme barre d'action):
Afin de transformer l'attribut de thème en un dessinable, j'ai utilisé une fonction d'extension:
la source
Si vous utilisez DrawerLayout avec ActionBarDrawerToggle , puis pour afficher le bouton Retour au lieu du bouton Menu (et vice versa), vous devez ajouter ce code dans votre activité:
Ainsi, lorsque vous devez afficher le bouton Retour au lieu du bouton Menu , appelez showBackInToolbar (true) et si vous avez besoin du bouton Menu , appelez showBackInToolbar (false) .
Vous pouvez générer une flèche de retour (ic_arrow_back_white_32dp) ici , recherchez arrow_back dans la section Clipart (utilisez 32dp par défaut avec un remplissage de 8dp). Sélectionnez simplement la couleur souhaitée.
la source
Vous pouvez toujours ajouter un
Relative layout
ou unLinear Layout
dans votreToolbar
et placer une vue Image pour l'icône de retour ou fermer l'icône n'importe où dans la barre d'outils comme vous le souhaitezPar exemple, j'ai utilisé la disposition relative dans ma barre d'outils
Et cela ressemble à ceci:
Vous pouvez ajouter un écouteur de clics sur cette vue d'image à partir d'une activité ou d'un fragment comme celui-ci.
la source
Avec Kotlin c'est devenu:
Xml:
Dans votre activité: -
la source
Si vous utilisez la navigation JetPack.
Voici la disposition de MainActivity
Configurez votre barre d'outils dans votre activité comme ci-dessous dans onCreate () de votre classe d'activité.
setupActionBarWithNavController (navController) Crée un bouton de retour sur la barre d'outils si nécessaire et gère la fonctionnalité backButton. Si vous devez écrire une fonctionnalité CustomBack, créez un callBack comme ci-dessous sur votre méthode fragment onCreate ()
De la documentation: https://developer.android.com/guide/navigation/navigation-custom-back
la source
Si vous utilisez la
androidx.appcompat.app.AppCompatActivity
seule utilisation:Définissez ensuite simplement dans l'
Manifest.xml
activité parent.Au lieu de cela, si vous utilisez un
Toolbar
et que vous souhaitez un comportement personnalisé, utilisez simplement:et dans votre activité:
la source