Estoy tratando de usar el siguiente código para centrar el texto en el ActionBar
, pero se alinea a la izquierda.
¿Cómo lo haces aparecer en el centro?
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("Canteen Home");
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.back);
android
android-actionbar
android-theme
Sourabh Saldi
fuente
fuente
Respuestas:
Para tener un título centrado en ABS (si desea tener esto de forma predeterminada
ActionBar
, simplemente elimine el "soporte" en los nombres de los métodos), puede hacer esto:En tu actividad, en tu
onCreate()
método:abs_layout
:Ahora debería tener una
Actionbar
con solo un título. Si desea configurar un fondo personalizado, configúrelo en el Diseño anterior (pero no olvide configurarloandroid:layout_height="match_parent"
).o con:
fuente
android:layout_gravity="center"
al LinearLayout.((TextView)actionBar.getCustomView().findViewById(R.id.textView1)).setText("new title");
, donde textView1 es suTextView
ID en su CustomView.No he tenido mucho éxito con las otras respuestas ... a continuación se muestra exactamente lo que funcionó para mí en Android 4.4.3 usando ActionBar en la biblioteca de soporte v7. Lo tengo configurado para mostrar el icono del panel de navegación ("botón de menú de hamburguesas")
XML
Java
fuente
params
objeto? ¿No podemos especificar la gravedad en el archivo de diseño externo que estamos asignando a la barra de acciones?Defina su propia vista personalizada con el texto del título, luego pase LayoutParams a setCustomView (), como dice Sergii.
EDITADO : al menos para el ancho, debe usar WRAP_CONTENT o el panel de navegación, el icono de la aplicación, etc. NO SE MUESTRA (la vista personalizada se muestra en la parte superior de otras vistas en la barra de acción). Esto ocurrirá especialmente cuando no se muestre ningún botón de acción.
EDITADO : Equivalente en diseño xml:
Esto no requiere que se especifique LayoutParams.
fuente
Solo una rápida adición a la respuesta de Ahmad. Ya no puede usar getSupportActionBar (). SetTitle cuando usa una vista personalizada con TextView. Entonces, para establecer el título cuando tiene múltiples actividades con esta barra de acciones personalizada (usando este xml), en su método onCreate () después de asignar una vista personalizada:
fuente
OKAY. Después de mucha investigación, combinada con la respuesta aceptada anterior, se me ocurrió una solución que también funciona si tiene otras cosas en su barra de acción (botón de retroceso / inicio, botón de menú). Básicamente, puse los métodos de anulación en una actividad básica (que se extienden todas las demás actividades) y coloqué el código allí. Este código establece el título de cada actividad tal como se proporciona en AndroidManifest.xml, y también hace algunas otras cosas personalizadas (como configurar un tinte personalizado en los botones de la barra de acciones y una fuente personalizada en el título). Solo necesita omitir la gravedad en action_bar.xml y usar relleno en su lugar.
actionBar != null
Se usa check, ya que no todas mis actividades tienen uno.Probado en 4.4.2 y 5.0.1
Y mi action_bar.xml es así (si alguien está interesado):
EDITAR : Si necesita cambiar el título a otra cosa DESPUÉS de que se cargue la actividad (ya se ha llamado a onCreateOptionsMenu), coloque otro TextView en su action_bar.xml y use el siguiente código para "rellenar" este nuevo TextView, configure el texto y muestre eso:
EDITAR (25.08.2016) : esto no funciona con la revisión appcompat 24.2.0 (agosto de 2016), si su actividad tiene un "botón de retroceso". Presenté un informe de error ( Problema 220899 ), pero no sé si es de alguna utilidad (dudo que se solucione pronto). Mientras tanto, la solución es verificar si la clase del niño es igual a AppCompatImageButton.class y hacer lo mismo, solo aumentar el ancho en un 30% (por ejemplo, appCompatImageButton.getWidth () * 1.3 antes de restar este valor del relleno original):
Mientras tanto, agregué algunos controles de relleno / margen allí:
fuente
sin vista personalizada, puede centrar el título de la barra de acción. también funciona perfectamente para el cajón de navegación
Codificación feliz. gracias.
fuente
Después de mucha investigación: esto realmente funciona:
Debe definir el diseño custom_actionbar.xml que se ajuste a sus requisitos, por ejemplo:
fuente
Funciona muy bien.
Debajo del diseño de custom_actionbar:
fuente
Necesitas configurar
ActionBar.LayoutParams.WRAP_CONTENT
yActionBar.DISPLAY_HOME_AS_UP
fuente
La mejor y más fácil forma, específicamente para aquellos que solo quieren una vista de texto con centro de gravedad sin ningún diseño xml.
fuente
Código aquí funcionando para mí.
fuente
Una solución exclusiva de Kotlin que no requiere cambios en los diseños XML:
fuente
Aquí hay una solución Kotlin + androidx completa, basada en la respuesta de @Stanislas Heili. Espero que pueda ser de utilidad para otros. Es para el caso en el que tiene una actividad que aloja varios fragmentos, con solo un fragmento activo al mismo tiempo.
En tu actividad:
En tus fragmentos:
fuente
Los otros tutoriales que he visto anulan todo el diseño de la barra de acciones que oculta los elementos del menú. Lo tengo funcionado simplemente haciendo los siguientes pasos:
Cree un archivo xml de la siguiente manera:
Y en la clase hazlo:
fuente
Para usuarios de Kotlin:
Utilice el siguiente código en su actividad:
Y el diseño XML / recurso:
fuente
Este código no ocultará el botón de retroceso, al mismo tiempo alineará el título en el centro.
llamar a este método en oncreate
fuente