Vous avez essayé de centrer un logo dans ma barre d’outils. Lorsque je navigue vers l'activité suivante, l'icône "à la hausse" est présente et l'icône Repousse légèrement mon logo sur la droite. Comment puis-je conserver mon logo au centre de la barre d’outils, sans supprimer l’icône d’aubaine?
Ceci est ma balise de 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>
Dans javadoc , il est écrit:
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 présentation . Si Toolbar.LayoutParams d'une vue enfant indique une valeur de Gravity De CENTER_HORIZONTAL, la vue va tenter de se centrer dans l'espace disponible de Dans la barre d'outils après que Ait été utilisé. mesurée.
Cela signifie que vous ne pouvez le faire que si vous créez une toolbar
personnalisée ou supprimez la icon
.
Vous pouvez le faire comme suit cela 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>
Vous pouvez le faire par programmation, c’est la seule façon pour moi de centrer complètement un logo dans la barre d’outils.
Ajouter à votre 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>
Définissez l'image en tant qu'arrière-plan de la barre d'outils et non en tant que 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">
Je suis un peu en retard pour répondre à cette question, 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 dessinable
<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>
Pour les développeurs qui utilisent vector drawable ou images SVG .
Cela 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 fixer la largeur et la hauteur de l'élément à l'intérieur de l'élément imprimable , bien que le vecteur imprimable ait déjà une taille fixe.
Ceci est votre vue de la 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"/>
Vous devez utiliser le widget AppBarLayout avec le widget Barre d'outils et définir la variable contentInsetStart
sur 0dp
. Sinon, la barre d’outils aura environ 8dp de remplissage au début (pour insérer les boutons de navigation si nécessaire)
Voici le code de travail:
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appBar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentStart="true"
Android:layout_alignParentTop="true"
Android:fitsSystemWindows="false"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:contentInsetStart="0dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<ImageView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="left"
Android:adjustViewBounds="true"
Android:scaleType="centerInside"
Android:src="@drawable/company_logo" />
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
Assurez-vous également que vous utilisez ?attr/actionBarSize
comme hauteur pour la barre d’outils, car il s’agit de la hauteur par défaut de la barre action et s’adaptera à toutes les tailles d’écran.
La solution la plus simple qui fonctionne même avec les actions de menu présentes est la suivante:
<Android.support.design.widget.AppBarLayout
Android:id="@+id/apbMain"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:theme="@style/AppTheme.AppBarOverlay">
<Android.support.v7.widget.Toolbar
Android:id="@+id/tlbMain"
Android:layout_width="match_parent"
Android:layout_height="?android:actionBarSize"
app:navigationContentDescription="@null"
app:title="@null"
app:subtitle="@null"
app:popupTheme="@style/AppTheme.PopupOverlay">
<ImageButton
Android:id="@+id/btnBack"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:paddingTop="12dp"
Android:paddingBottom="12dp"
Android:scaleType="centerInside"
Android:background="@null"
Android:onClick="onBackClickListener"
Android:src="@drawable/ic_navigation_back"
Android:visibility="@{showBackBtn ? View.VISIBLE : View.INVISIBLE}" />
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="10dp"
Android:layout_gravity="center"
Android:src="@drawable/toolbar_icon" />
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>