web-dev-qa-db-fra.com

Comment centrer le bouton retour de la barre d'outils?

Je ne parviens pas à centrer le bouton Précédent de la barre d’outils du support technique… .. Je l’utilise dans une ActionBarActivity.

<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:toolbar="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:minHeight="?attr/actionBarSize"
    toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

Et configurez la navigation dans la onCreate() de l'activité comme suit:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setTitle(R.string.title_activity_scanner);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Cependant, voici ce que je veux dire: not centered back button screenshot Comme vous pouvez voir le bouton de retour est égaré

Edit: Le problème semble résider dans une valeur personnalisée pour ?attr/actionBarSize défini sur 40dp, mais il s'avère maintenant que c'est le titre qui est égaré.

28
mewa

Depuis le developer.Android.com :

La barre d'outils prend en charge un ensemble de fonctionnalités plus ciblé que ActionBar. Dès le début pour finir, une barre d’outils peut contenir une combinaison des éléments facultatifs suivants éléments:

Un bouton de navigation. Cela peut être une flèche vers le haut, une bascule dans le menu de navigation, fermer, effondrer, terminé ou un autre glyphe choisi par l'application. Ce Ce bouton doit toujours être utilisé pour accéder à d'autres destinations de navigation dans le conteneur de la barre d’outils et son contenu signifié ou sinon, laissez le contexte actuel indiqué par la barre d'outils. Le bouton de navigation est aligné verticalement dans le minimum de la barre d’outils. hauteur, si définie.

Ainsi, si vous définissez l'attribut minHeight de la même manière que la hauteur de votre barre d'outils (layout_height), la flèche arrière sera centrée verticalement.

69
Rick Sanchez

Inside ActionBarActivity

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  getSupportActionBat().setTitle("Hello World"); 
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  getSupportActionBar().setHomeButtonEnabled(true);

Code de mise en page: 

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@color/primary"
        app:theme="@style/ToolbarTheme"
        app:popupTheme="@style/Theme.AppCompat"/>

Et style: 

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowActionBar">false</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme" parent="AppTheme.Base">

Rappelez-vous que la barre d’outils n’est qu’un groupe de visualisation, vous pouvez donc l’appeler de la même manière que ..... Voici un lien d’image: exemple de barre d’outils

J'espère que ça aide.

2
kamilmasta

Pour y parvenir, le meilleur moyen consiste à supprimer le bouton Précédent de la barre d'outils, à ajouter un bouton ImageButton personnalisé à votre présentation XML et à y définir une image. Vous pouvez placer ce ImageButtton où vous voulez dans la barre d’outils.

Le code de présentation de votre activité devrait ressembler à ceci.

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <ImageButton
        Android:layout_width="60dp"
        Android:layout_height="60dp"
        Android:id="@+id/button"
        Android:src="@drawable/attach_icon"
        Android:layout_alignParentTop="true"
        Android:layout_centerHorizontal="true" />

</RelativeLayout>
1
Pruthviraj

@Rick Sanchez répond, c'est du travail, configurez layout_height de la barre d'outils comme minHeight

J'ai trouvé dans le constructeur de la barre d'outils avoir un champ peut configurer la gravité du bouton, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

, mais v7 support Toolbar ne peut pas configurer, mButtonGravity = Gravity.TOP;

0
act262

Piggybacking sur @Rick Sanchez answer - si vous connaissez la taille de l'attribut minHeight de la barre d'outils, vous pouvez alors utiliser:

Android:gravity="top"
app:titleMarginTop="@dimen/margin_to_center"

dans la barre d’outils pour centrer le texte. Si vous utilisez Android:minHeight="?actionBarSize", ce serait environ 13p

0
AllDayAmazing

Pour moi, aucune des solutions n'a fonctionné. Dans mon cas, le problème était la marge que j'ai appliquée:

 <Android.support.v7.widget.Toolbar
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     ... >

     <View
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="10dp"
        Android:layout_marginTop="10dp" />

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

Après l’avoir appliqué à la barre d’outils directement, le bouton était centré verticalement:

 <Android.support.v7.widget.Toolbar
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     Android:layout_marginBottom="10dp"
     Android:layout_marginTop="10dp"
     ... >

     <View
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" />

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

définissez la taille de votre bouton 56dp et réglez scaleType sur center sans marges sur Appbar Assurez-vous que votre icône correspond aux dimensions 24x24

0
Mahdi Astanei