Ciao Sto sviluppando un'applicazione Android. Nella mia applicazione sto usando la barra delle azioni. Voglio allineare il centro del mio titolo di finestra in action-bar. So che è possibile utilizzare i file xml. ma voglio farlo usando lo stile in modo che sia applicabile per ogni mia finestra, come fare questo ha bisogno di aiuto. Grazie.Centro Allinea il titolo nella barra delle azioni usando gli stili in Android.
risposta
So che è possibile utilizzare i file xml. ma voglio farlo usando lo stile in modo che sia applicabile per ogni mia finestra, come fare questo bisogno di aiuto .
Si usa ancora xml per fare ciò. Basta applicare l'applicazione di stile in modo ampio e non solo a una singola attività. Si prega di consultare la documentazione di Android per una descrizione completa:
https://developer.android.com/training/basics/actionbar/styling.html
Applicare quindi il tema per l'intera applicazione o singole attività:
<application android:theme="@style/CustomActionBarTheme" ... />
EDIT: Ecco come si dovrà gestire il centraggio del titolo:
Nel tuo action_bar.xml avrai qualcosa del genere:
<?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>
Poi, nel tuo onCreate() avrete qualcosa di simile:
getSupportActionBar().setCustomView(R.layout.action_bar);
Se avete bisogno di avere questo in ogni attività, si hanno 2 scelte:
- Il modo forza bruta : Inserisci la riga di codice sopra nel onCreate di ogni attività.
- Estendi attività e inserisci il codice di inizializzazione ActionBar in onCreate. Quindi estendi la tua classe di attività personalizzata per ogni attività. Non dimenticare di chiamare il super() in ogni Activity onCreate().
grazie per l'aiuto Ho controllato il tuo dato link. In realtà sono in grado di impostare la dimensione del colore del titolo ma non riesco a fare allineare il senter. Hai qualche idea in merito. Ho bisogno di aiuto. grazie. – nilkash
Aggiornato la mia risposta. Spero che ti aiuti. – SBerg413
grazie per l'aiuto. L'ho fatto allo stesso modo Ma sento ancora che non sono autorizzato a centrarlo attraverso gli stili. :( – nilkash
Metodo semplice per centrare ActionBarTitle senza utilizzare il layout personalizzato per actionBar.
Ma prima di quel primo nascondere fino Icona come:
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);
}
}
funziona .. !! –
La ripetizione dello stesso con action_bar_subtitle centra anche il sottotitolo della barra delle azioni. – Intrications
Funziona, ma se ActionBar ha MenuItems, il titolo si sposta alcuni pixel a sinistra – saiyancoder
Unfortunally, la via di SBerg413 non funziona per me.
mio layout personalizzato è
<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>
E tutto funziona perfettamente:
UPD: questa attività io uso come un genitore per tutte le mie attività, che dovrebbe avere la barra delle azioni.
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 risposta di Napolean mi ha aiutato, ma nel mio caso sto usando Xamarin Android (monodroid).Ecco la traduzione del suo codice in 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);
Da dove chiami questo codice? L'ho eseguito dall'attività principale, ma quando OnConfigurationChange viene attivato da una rotazione, il centraggio viene ripristinato. – Ian
Ho provato con xml il suo funzionamento ma voglio farlo con gli stili. perché per ogni finestra il mio titolo sarà nel mezzo. Quindi voglio farlo con gli stili. – nilkash
qualcuno può aiutare http://stackoverflow.com/questions/31803463/how-to-set-action-bar-title-center-in-navigation-drawer – Aditya