Comment centrer ImageView dans une barre d'outils?

J'ai essayé de centrer un logo dans ma barre d'outils. Lorsque je navigue vers la prochaine activité, l'icône "up affordance" est présente, et elle va pousser légèrement mon logo vers la droite. Comment puis-je garder mon logo au centre de la barre d'outils, sans supprimer l'icône de l'accessibilité?

C'est ma balise de la barre d'outils

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primaryColor" android:paddingTop="@dimen/app_bar_top_padding" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" app:theme="@style/CustomToolBarTheme"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/ic_android_logo" android:layout_gravity="center" android:paddingBottom="3dp"/> </android.support.v7.widget.Toolbar> 

6 Solutions collect form web for “Comment centrer ImageView dans une barre d'outils?”

Dans javadoc , il dit:

Une ou plusieurs vues personnalisées. L'application peut ajouter des vues enfant arbitraires à la barre d'outils. Ils apparaîtront à cette position dans la mise en page. Si la barre d'outils d' une vue d'enfant.LayoutParams indique une valeur de gravité de CENTER_HORIZONTAL, la vue tentera de se centrer dans l'espace disponible restant dans la barre d'outils après que tous les autres éléments aient été mesurés .

Cela signifie que vous ne pouvez le faire que si vous créez une toolbar personnalisée ou supprimez l' icon .

Vous pouvez le faire comme suit: il fonctionne pour moi:

 <android.support.v7.widget.Toolbar android:id="@+id/mainToolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="@dimen/abc_action_bar_default_height_material"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/headerLogo" android:contentDescription="@string/app_name" /> </RelativeLayout> </android.support.v7.widget.Toolbar> 

Définissez l'image en arrière-plan de la barre d'outils, et non comme une vue enfant.

 <android.support.v7.widget.Toolbar android:id="@+id/detail_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:background="@drawable/my_image" app:theme="@style/CustomToolBarTheme"> 

Vous pouvez le faire par programmation, c'est la seule manière dont j'ai réussi à centrer complètement un logo dans la barre d'outils.

Ajouter à vous activité:

 @Override public void onWindowFocusChanged(boolean hasFocus){ // set toolbar logo to center programmatically Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar); ImageView logo = (ImageView) findViewById(R.id.logo); int offset = (toolbar.getWidth() / 2) - (logo.getWidth() / 2); // set logo.setX(offset); } 

Et votre toolbar_main.xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/bg_yellow" android:elevation="4dp" android:fontFamily="@string/font_family_thin" app:contentInsetStartWithNavigation="0dp" android:layout_gravity="center_horizontal"> <TextView android:id="@+id/title_toolbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@string/font_family_light" android:textColor="@color/text_dark_xxx" android:textSize="@dimen/text_default" android:layout_centerVertical="true" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/logo" android:id="@+id/logo" android:paddingTop="5dp" /> </android.support.v7.widget.Toolbar> 

Pour les développeurs qui utilisent des images dessinables vectorielles ou SVG .
Ceci peut être votre arrière-plan pour la barre d'outils, drawable_toolbar_background.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/primary"/> </shape> </item> <item android:width="@dimen/toolbar_app_icon_width" android:height="@dimen/toolbar_app_icon_height" android:drawable="@drawable/ic_app_logo" android:gravity="center"/> </layer-list> 

Et Oui, vous devez réparer la largeur et la hauteur, bien que le dessin vectoriel ait déjà une taille fixe.
C'est la vue de votre barre d'outils,

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/drawable_toolbar_background" android:minHeight="?attr/actionBarSize" android:theme="?attr/actionBarTheme"/> 

Je suis un peu en retard pour répondre à cela, mais j'ai une solution merveilleuse

  <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:contentInsetStart="0dp" app:contentInsetEnd="0dp" app:popupTheme="@style/AppTheme.PopupOverlay"> </android.support.v7.widget.Toolbar> <RelativeLayout android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content"> <ImageView android:layout_width="wrap_content" android:layout_height="?attr/actionBarSize" android:contentDescription="@string/app_name" android:id="@+id/logoImageView" android:layout_centerInParent="true" android:adjustViewBounds="true" android:src="@drawable/toolbar_background" /> </RelativeLayout> </FrameLayout> </android.support.design.widget.AppBarLayout> 

Et voici mon toolbar_background.xml drawable

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/colorPrimary" /> </shape> </item> <item> <bitmap android:src="@drawable/splash" android:gravity="center" /> </item> 

Sortie ici

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.