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 ActionBar
simplemente 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.