Saltar al contenido

¿Cómo centrar la alineación del título de ActionBar en Android?

Ten en cuenta que en las ciencias informáticas un error suele tener diferentes resoluciones, no obstante te mostramos lo más óptimo y eficiente.

Solución:

Para tener un título centrado en ABS (si quieres tener esto por defecto ActionBarsimplemente elimine el “soporte” en los nombres de los métodos), podría hacer esto:

En tu Actividad, en tu onCreate() método:

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
getSupportActionBar().setCustomView(R.layout.abs_layout);

abs_layout:




    


Ahora deberías tener un Actionbar con solo un titulo. Si desea configurar un fondo personalizado, configúrelo en el diseño anterior (pero no olvide configurar android:layout_height="match_parent").

o con:

getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.yourimage));

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 ícono del cajón de navegación (“botón de menú de hamburguesas”)

XML

    


    


Java

//Customize the ActionBar
final ActionBar abar = getSupportActionBar();
abar.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_background));//line under the action bar
View viewActionBar = getLayoutInflater().inflate(R.layout.actionbar_titletext_layout, null);
ActionBar.LayoutParams params = new ActionBar.LayoutParams(//Center the textview in the ActionBar !
        ActionBar.LayoutParams.WRAP_CONTENT, 
        ActionBar.LayoutParams.MATCH_PARENT, 
        Gravity.CENTER);
TextView textviewTitle = (TextView) viewActionBar.findViewById(R.id.actionbar_textview);
textviewTitle.setText("Test");
abar.setCustomView(viewActionBar, params);
abar.setDisplayShowCustomEnabled(true);
abar.setDisplayShowTitleEnabled(false);
abar.setDisplayHomeAsUpEnabled(true);
abar.setIcon(R.color.transparent);
abar.setHomeButtonEnabled(true);

Defina su propia vista personalizada con el texto del título, luego pase LayoutParams a setCustomView(), como dice Sergii.

ActionBar actionBar = getSupportActionBar()
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
actionBar.setCustomView(getLayoutInflater().inflate(R.layout.action_bar_home, null),
        new ActionBar.LayoutParams(
                ActionBar.LayoutParams.WRAP_CONTENT,
                ActionBar.LayoutParams.MATCH_PARENT,
                Gravity.CENTER
        )
);

EDITADO: Al menos para el ancho, debe usar WRAP_CONTENT o su cajón de navegación, ícono de aplicación, etc. NO SE MOSTRARÁ (la vista personalizada se muestra encima 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.

actionBar.setCustomView(getLayoutInflater().inflate(R.layout.action_bar_home, null);

Te mostramos comentarios y calificaciones

Si piensas que ha resultado de provecho nuestro artículo, nos gustaría que lo compartas con más desarrolladores y nos ayudes a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *