texto - Centrar Alinear el título en la barra de acción usando estilos en Android.
centrar titulo de toolbar android studio (4)
Hola estoy desarrollando la aplicación para Android. En mi aplicación estoy usando la barra de acción. Quiero hacer que el centro alinee mi título de ventana en la barra de acción. Sé que es posible usar archivos xml. pero quiero hacerlo utilizando el estilo para que se aplique a todas mis ventanas, cómo hacerlo necesita ayuda. Gracias.
Sé que es posible usar archivos xml. pero quiero hacerlo utilizando el estilo para que se aplique a todas mis ventanas, cómo hacerlo necesita ayuda.
Todavía usas xml para hacer esto. Simplemente aplique el estilo de aplicación de ancho y no solo a una sola actividad. Por favor, consulte la documentación de Android para una descripción completa:
https://developer.android.com/training/basics/actionbar/styling.html
Luego aplique su tema a toda su aplicación o actividades individuales:
<application android:theme="@style/CustomActionBarTheme" ... />
EDITAR: Así es como tendrás que manejar el centrado del título:
En tu action_bar.xml tendrás algo como esto:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="SOME TITLE"
android:textSize="18sp" />
</RelativeLayout>
Luego en tu onCreate () tendrás algo como:
getSupportActionBar().setCustomView(R.layout.action_bar);
Si necesita tener esto en cada actividad, tiene 2 opciones:
- La forma de la fuerza bruta: coloque la línea de código anterior en onCreate de cada actividad.
- Extienda la actividad y coloque su código de inicialización ActionBar en onCreate. Luego extienda su clase de actividad personalizada para cada actividad. No se olvide de llamar al super () en onCreate () de cada Actividad.
Desafortunadamente, la forma de SBerg413 no funciona para mí.
mi diseño personalizado es
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/custom_action_bar_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="test"
android:textColor="@color/action_bar_title_color"
android:textSize="@dimen/action_bar_title_size" />
</RelativeLayout>
UPD: esta actividad la uso como un padre para todas mis actividades, que debería tener la barra de acción.
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 @Napole 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<TextView>(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);
Método sencillo para centrar ActionBarTitle sin utilizar un diseño personalizado para actionBar.
Pero antes de eso primero escóndete el icono 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);
}
}