Centro Alinea el título en la barra de acciones usando estilos en Android.

Hola, estoy desarrollando aplicaciones para Android. En mi aplicación, estoy usando la barra de acciones. Quiero hacer que el centro alinee mi título de ventana en la barra de acciones. Sé que es posible usar archivos xml. pero quiero hacerlo usando el estilo para que sea aplicable para todas las ventanas, y para hacer esto necesito ayuda. Gracias.

Sé que es posible usar archivos xml. pero quiero hacerlo usando el estilo para que sea aplicable para todas las ventanas, y para hacer esto necesito ayuda.

Todavía usas xml para hacer esto. Simplemente aplique la aplicación de estilo de ancho y no solo a una sola actividad. Consulte la documentación de Android para obtener una descripción completa:

https://developer.android.com/training/basics/actionbar/styling.html

A continuación, aplique su tema a toda su aplicación o actividades individuales:

 

EDITAR: Así es como tendrá que manejar el centrado del título:

En su action_bar.xml, tendrá algo como esto:

     

Luego, en tu onCreate () tendrás algo como:

 getSupportActionBar().setCustomView(R.layout.action_bar); 

Si necesita tener esto en cada actividad, tiene 2 opciones:

  1. La forma de fuerza bruta: coloca la línea de código anterior en todas las actividades onCreate.
  2. Extienda la actividad y coloque su código de inicialización de ActionBar en onCreate. Luego, amplíe su clase de actividad personalizada para cada actividad. No olvides llamar al super () en cada actividad onCreate ().

Método simple para centrar ActionBarTitle sin usar diseño personalizado para actionBar.

Pero antes de eso, primero oculta Icon como:

 myActionBar.setIcon(new ColorDrawable(Color.TRANSPARENT)); private void centerActionBarTitle() { int titleId = 0; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { titleId = getResources().getIdentifier("action_bar_title", "id", "android"); } else { // This is the id is from your app's generated R class when // ActionBarActivity is used for SupportActionBar titleId = R.id.action_bar_title; } // Final check for non-zero invalid id if (titleId > 0) { TextView titleTextView = (TextView) findViewById(titleId); DisplayMetrics metrics = getResources().getDisplayMetrics(); // Fetch layout parameters of titleTextView // (LinearLayout.LayoutParams : Info from HierarchyViewer) LinearLayout.LayoutParams txvPars = (LayoutParams) titleTextView.getLayoutParams(); txvPars.gravity = Gravity.CENTER_HORIZONTAL; txvPars.width = metrics.widthPixels; titleTextView.setLayoutParams(txvPars); titleTextView.setGravity(Gravity.CENTER); } } 

Desafortunadamente, el camino de SBerg413 no funciona para mí.

mi diseño personalizado es

    

Y todo funciona perfecto:
http://i.stack.imgur.com/MvQgj.png

UPD: esta actividad la uso como padre para todas mis actividades, que debería tener la barra de acciones.

 public class ActionBarCustomizationActivity extends ActionBarActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getSupportActionBar().setDisplayShowCustomEnabled(true); LayoutInflater inflater = LayoutInflater.from(this); View v = inflater.inflate(R.layout.custom_action_bar, null); TextView titleTextView = (TextView) v.findViewById(R.id.custom_action_bar_title); titleTextView.setText(this.getTitle()); titleTextView.setTypeface(App.getInstance().getActionBarTypeFace()); this.getSupportActionBar().setCustomView(v); } } 

La respuesta de @ Napolean me ayudó, pero en mi caso estoy usando Xamarin android (monodroid). Aquí está la traducción de su código en C #:

 var titleId = Resources.GetIdentifier("action_bar_title", "id", "android"); var titleTextView = FindViewById(titleId); var layoutParams = (LinearLayout.LayoutParams) titleTextView.LayoutParameters; layoutParams.Gravity = GravityFlags.CenterHorizontal; layoutParams.Width = Resources.DisplayMetrics.WidthPixels; titleTextView.LayoutParameters = layoutParams; titleTextView.Gravity = GravityFlags.Center; //Added padding because it is slightly off centered. titleTextView.SetPadding(100, 0,0,0);