studio programacion herramientas fundamentos con avanzado aplicaciones android material-design android-toolbar android-actionbaractivity

android - programacion - ¿Cómo centrar el botón de atrás de la barra de herramientas?



manual de android en pdf (6)

Dentro de ActionBarActivity

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

Código de diseño:

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

Y estilo

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

Recuerda que la barra de herramientas es solo un grupo de vista, por lo que puedes personalizarla como quieras. Aquí está el enlace de la imagen: muestra de la barra de herramientas

Espero eso ayude.

Tengo un problema al intentar centrar el botón Atrás en la barra de herramientas de soporte. Lo estoy usando dentro de un 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" />

Y configura la navegación hacia arriba dentro de la Actividad onCreate() esta manera:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.title_activity_scanner); getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Sin embargo, lo que estoy consiguiendo es esto: Como se puede ver, el botón Atrás está fuera de lugar.

Edición: el problema parece estar en un valor personalizado para ?attr/actionBarSize establecido en 40dp, sin embargo, ahora resulta que es el título el que está mal colocado.


Desde developer.android.com :

La barra de herramientas admite un conjunto de funciones más específico que ActionBar. De principio a fin, una barra de herramientas puede contener una combinación de los siguientes elementos opcionales:

Un botón de navegación. Esto puede ser una flecha hacia arriba, un menú de navegación para alternar, cerrar, contraer, listo u otro glifo que elija la aplicación. Este botón siempre debe usarse para acceder a otros destinos de navegación dentro del contenedor de la Barra de herramientas y su contenido significativo o, de lo contrario, dejar el contexto actual indicado por la Barra de herramientas. El botón de navegación está alineado verticalmente dentro de la altura mínima de la barra de herramientas, si está configurado.

Entonces, si establece el atributo minHeight de la misma manera que la altura de la barra de herramientas ( layout_height ), la flecha hacia atrás se centrará verticalmente.


La mejor manera de lograrlo es eliminar el botón Atrás normal de la barra de herramientas y agregar un ImageButton personalizado en su diseño XML y configurarlo. Puede colocar este ImageButtton donde desee en la barra de herramientas.

Su código de diseño de la actividad debe ser algo como esto.

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


La respuesta de @Rick Sanchez es trabajo, configurar layout_height de la barra de herramientas de la misma manera que minHeight

Encontré en el constructor de la barra de herramientas un campo que puede configurar la gravedad del botón, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

, pero la barra de herramientas de soporte de v7 no se puede configurar, mButtonGravity = Gravity.TOP;


Para mí, ninguna de las soluciones funcionó. En mi caso el problema fue el margen que apliqué:

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

Después de aplicarlo directamente a la barra de herramientas, el botón se centró verticalmente:

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


Aprovechando la respuesta de @Rick Sanchez , si conoce el tamaño del atributo minHeight de la barra de herramientas, puede usar:

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

en la barra de herramientas para centrar el texto. Si está usando android:minHeight="?actionBarSize" entonces esto sería aproximadamente 13p