¿Alguien sabe cómo establecer el relleno entre el icono de inicio de ActionBar y el título?
android
android-actionbar
Alesqui
fuente
fuente
Respuestas:
Adapté la respuesta de Cliffus y asigné el logo dibujable en mi definición de estilo de barra de acción, por ejemplo, como este en res / style.xml:
El dibujable se parece al de Cliffus (aquí con el icono del iniciador de aplicaciones predeterminado) en res / drawable / actionbar_space_between_icon_and_title.xml:
En android_manifest.xml aún puede establecer un ícono de aplicación diferente (ícono de iniciador en el 'escritorio'. Cualquier definición de logotipo diferente aquí es visible en actividades sin una barra de acción.
fuente
EDITAR : asegúrese de configurar este elemento de diseño como LOGO , no como el ícono de su aplicación como lo hicieron algunos de los comentaristas.
Simplemente haga un XML dibujable y colóquelo en la carpeta de recursos "dibujable" (sin ninguna densidad u otra configuración).
El último paso es establecer este nuevo elemento de diseño como logotipo en su manifiesto (o en el objeto Actionbar en su actividad)
¡Buena suerte!
fuente
También enfrenté un problema similar, en mi caso tuve que establecer títulos dinámicamente en cada actividad según el contenido.
Entonces esto funcionó para mí.
Si todo lo que quieres es el espaciado, esta es la solución más fácil que se me ocurre.
fuente
app:titleMarginStart
atributo en el XML de diseño.Así es como pude establecer el relleno entre el ícono de inicio y el título.
Sin embargo, no pude encontrar una manera de personalizar esto a través de los estilos xml de ActionBar. Es decir, el siguiente XML no funciona:
Sin embargo, si está buscando lograr esto a través de xml, estos dos enlaces pueden ayudarlo a encontrar una solución:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(Este es el diseño real utilizado para mostrar el icono de inicio en una barra de acción) https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
fuente
padding
, parece que se usamarginEnd
desde api 17, lo que probablemente romperá esta solución. Vea el mío a continuaciónEsta es una pregunta común en Material Design, ya que es posible que desee alinear el título de las barras de herramientas con el contenido del fragmento a continuación. Para hacer esto, puede anular el relleno predeterminado de "12dp" usando el atributo contentInsetStart = "72dp" en su diseño toolbar.xml como se muestra a continuación
toolbar.xml
Luego, en tu actividad, llama
Y terminas con esto:
fuente
app:titleMarginStart="dimension"
que apuntar directamente al título.contentInsetStart
pone un espacio entre el ícono de inicio y el título, la respuesta al menos podría decirlo. Mi prueba de hace un momentocontentInsetStart
parecía poner el espacio antes del logotipo (que ciertamente no es lo mismo que el icono de inicio).Para mí, solo funcionó la siguiente combinación, probada de API 18 a 24
donde en "aplicación" es:
xmlns:app="http://schemas.android.com/apk/res-auto"
por ejemplo.
fuente
Si está utilizando la barra de herramientas de AppCompat (android.support.v7.widget.Toolbar,> = revisión 24, junio de 2016), el relleno entre el icono y el título se puede cambiar con el siguiente valor:
Para mejorar mi respuesta, puede usarlo en su barra de herramientas directamente dentro de su actividad o puede crear un nuevo archivo de diseño para su barra de herramientas. En este caso, solo tiene que importar el @id de su barra de herramientas usando la propiedad de inclusión en cada vista necesaria.
Luego puede importar su diseño en su activity.xml
fuente
Usar
titleMarginStart
funciona para mí. Ejemplo de Xamarin:Establezca el logotipo así:
fuente
Lo usé antes del título y trabajé para mí.
fuente
Estoy usando una imagen personalizada en lugar del texto del título predeterminado a la derecha del logotipo de mi aplicación. Esto está configurado programáticamente como
Los problemas con las respuestas anteriores para mí son que la sugerencia de @ Cliffus no me funciona debido a los problemas que otros han descrito en los comentarios y, aunque la configuración de relleno programático de @dushyanth puede haber funcionado en el pasado, creo que el hecho de que el espaciado es ahora configurado usando
android:layout_marginEnd="8dip"
desde API 17 configurar manualmente el relleno no debería tener ningún efecto. Vea el enlace que publicó en git para verificar su estado actual.Una solución simple para mí es establecer un margen negativo en mi vista personalizada en la barra de acciones, así
android:layout_marginLeft="-14dp"
. Una prueba rápida muestra que me funciona en 2.3.3 y 4.3 usandoActionBarCompat
¡Espero que esto ayude a alguien!
fuente
Resolví este problema usando un diseño de navegación personalizado
Al usarlo, puede personalizar cualquier cosa en el título en la barra de acción:
build.gradle
AndroidManifest.xml
styles.xml
action_bar.xml
fuente
Tuve un problema similar pero con el espacio entre el icono / logotipo de la aplicación personalizada y arriba en la barra de acción. La solución de Dushyanth de configurar el relleno me funcionó programáticamente (configurar el relleno en el icono de la aplicación / logotipo). Intenté encontrar android.R.id.home o R.id.abs__home ( solo ActionBarSherlock , ya que esto garantiza la compatibilidad con versiones anteriores), y parece funcionar en dispositivos 2.3-4.3 en los que he probado.
fuente
Para mi caso, fue con Toolbar que lo resolví así:
ic_toolbar_drawble.xml
En mi Fragmento, verifico la API:
¡Buena suerte!
fuente
Puede cambiar el tamaño de diseño de su DrawerArrow de esta manera:
No es la respuesta correcta, porque no puede elegir el lado de relleno y la escala del icono DrawerArrow cuando cambia drawableSize (drawableSize = width = height). Pero puedes marginar desde la izquierda. Al margen de la derecha hacer
fuente
¡Usé este método
setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)
y funciona!fuente
Cuando utiliza una barra de herramientas personalizada, puede utilizar
y en el diseño de su barra de herramientas, simplemente configure
app:titleMarginStart="16dp"
Tenga en cuenta que debe establecer el icono como un logotipo, no utilice
getSupportActionBar().setIcon(R.drawable.logo)
en su lugar:getSupportActionBar().setLogo(R.drawable.logo)
fuente
Solía
AppBarLayout
y costumbreImageButton
hacer para ello.Mi código Java:
fuente
También puede lograr lo mismo mediante el método:
fuente
En su XML, configure el
app:titleMargin
en la vista de la barra de herramientas de la siguiente manera:O en tu código:
fuente
esto me funciona para agregar relleno al título y para el
ActionBar
ícono lo configuré programáticamente.fuente
Solo agregue
" "
el nombre de su aplicación Se agregará espacio entre el icono y el títulofuente