Estado tratando de centro de un logotipo dentro de mi barra de herramientas. Cuando me vaya a la siguiente actividad, el «hasta la posibilidad de» icono está presente, y le empuje mi logotipo ligeramente a la derecha. ¿Cómo puedo mantener mi logo en el centro de la barra de herramientas, sin eliminar la posibilidad de hasta el icono?

Este es mi barra de herramientas de la etiqueta de

<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>

OriginalEl autor Spike Flail | 2015-02-10

8 Comentarios

  1. 5

    En javadoc, dice:

    Una o más vistas personalizadas. La aplicación puede agregar arbitraria niño
    vistas a la Barra de herramientas. Ellos van a aparecer en esta posición dentro de la
    diseño. Si un niño de la vista de la Barra de herramientas.LayoutParams indica una Gravedad
    valor de CENTER_HORIZONTAL la vista se intento de centro dentro de la
    espacio disponible restante en la Barra de herramientas después de todos los otros elementos han
    se han medido
    .

    Significa que usted no puede hacerlo a menos que crear un custom toolbar o eliminar la icon.

    He encontrado esto para ser una solución inteligente stackoverflow.com/a/33082083/1544047
    Esto no debería ser aceptada respuesta, no proporciona ningún tipo de solución se refiere sólo a una parte de la documentación.

    OriginalEl autor T D Nguyen

  2. 11

    Usted puede hacerlo de la siguiente funciona para mí :

    <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>
    bastante seguro de que esto no funcionará si usted agregar elementos de menú la barra de herramientas, ya que reduce el ancho de la RelativeLayout.

    OriginalEl autor Kenan Begić

  3. 3

    Puede hacer mediante programación, que es la única manera que he conseguido totalmente el centro de un logo en la barra de herramientas.

    Añadir la actividad:

    @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);
    
    }

    y su 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>
    creo que esto debe ser aceptado respuesta, no funciona nada, pero esto !
    Falla con los elementos de menú de diferentes tamaños.
    este debe ser aceptado por la respuesta, cuando la barra de la aplicación es tener sólo el icono de menú. Gracias por la solución.
    @McGuile en el ejemplo anterior se puede ver que en la actualidad sólo hay un TextView y un ImageView, así que si usted está inflando un menú que probablemente iba a tener que medir los iconos así! Sugerencia, tal vez usted podría ir en Tools > Diseño de Inspector para ver lo que realmente está sucediendo.

    OriginalEl autor Rodrigo Queiroz

  4. 3

    Soy poco tarde para contestar , pero tiene solución maravillosa

     <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>

    y aquí está mi toolbar_background.xml dibujable

    <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>

    Cómo el centro de ImageView en una barra de herramientas?

    OriginalEl autor Umar Ata

  5. 2

    Establecer la imagen como fondo de la barra de herramientas, no como un niño.

    <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">
    Con LayerList dibujable developer.android.com/guide/topics/resources/… también puede establecer el color de fondo configuración del logotipo como de mapa de bits y poner un color sólido por debajo de ella (en la parte superior en xml). Es decir, si no se establece en la barra de herramientas tema.

    OriginalEl autor Jesus Almaral

  6. 2

    Para los desarrolladores que están usando vector dibujable o imágenes SVG.

    Este puede ser el fondo de la barra de herramientas, 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>

    y Sí, usted tiene que fijar la anchura y la altura del elemento dentro de dibujable, aunque el vector de la imagen ya está teniendo un tamaño fijo.

    Esta es tu barra de herramientas vista,

    <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"/>
    De alguna manera su solución no funciona para mí. El icono se estira para adaptarse a la anchura de la barra de herramientas. ¿Alguna vez has experimentado ese comportamiento? Este fue el cerrado he encontrado hasta ahora para que el vector de dibujables …
    Sí, yo he tenido este problema. Es por eso que usted tiene que fijar la altura y la anchura de su elemento dentro de drawable_toolbar_background. Voy a destacar.

    OriginalEl autor Rana Ranvijay Singh

  7. 2

    Que usted necesita para utilizar el AppBarLayout widget con el widget de la Barra de herramientas y la configuración de la contentInsetStart a 0dp. De lo contrario, la Barra de herramientas sobre 8dp de relleno en el inicio (para insertar los botones de navegación si es necesario)

    Aquí está el código de trabajo:

    <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>

    También, asegúrese de usar ?attr/actionBarSize como la altura de la barra de herramientas como este es el valor predeterminado actionBar altura y se ajusta a todos los diferentes tamaños de pantalla.

    OriginalEl autor Moh Kh

  8. 0

    La más fácil solución que funciona incluso con las acciones del menú actual es este:

     <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>

    OriginalEl autor Ali Kazi

Dejar respuesta

Please enter your comment!
Please enter your name here