Come posso fare in modo che una barra di azione abbia il logo al centro e due elementi di azione sui lati come questo?Logo barra ActionBar centrato e oggetti azione sui lati
userò ActionBar Sherlock.
Come posso fare in modo che una barra di azione abbia il logo al centro e due elementi di azione sui lati come questo?Logo barra ActionBar centrato e oggetti azione sui lati
userò ActionBar Sherlock.
Come ho notato in un commento, non sono esattamente sicuro che nulla di tutto ciò cambierebbe con ABS (sono sicuro che non sarebbe molto), ma con la barra di azione standard è possibile caricare un layout personalizzato .xml per il tuo titolo della barra delle azioni. Ad esempio, si potrebbe avere action_bar_title.xml:
<?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="match_parent"
android:background="@drawable/your_desired_background" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:maxLines="1"
android:ellipsize="end"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>
Poi, nella vostra attività, si vorrebbe chiamare un metodo come questo in onCreate():
private void setupActionBar() {
ActionBar ab = getActionBar();
ab.setDisplayShowCustomEnabled(true);
ab.setDisplayShowTitleEnabled(false);
ab.setIcon(R.drawable.your_left_action_icon);
LayoutInflater inflator = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.action_bar_title, null);
TextView titleTV = (TextView) v.findViewById(R.id.title);
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts/your_custom_font.ttf");
titleTV.setTypeface(font);
ab.setCustomView(v);
ab.setHomeAsUpEnabled(true);
}
di prendere il controllo della sinistra elemento di azione, si potrebbe fare questo nella vostra attività:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.yourRightActionItem:
//do something
return true;
case android.R.id.home: //<-- this will be your left action item
// do something
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Naturalmente, assicurarsi di fare anche le altre configurazioni necessarie per gli elementi di azione nel vostro menu di XML pure. Questo sarà per tutti gli elementi di azione a lato destro.
Modifica: Appena visto in un altro commento hai detto che il titolo sarebbe un'immagine. Se questo è il caso, basta sostituire il TextView che ho usato nel mio esempio con ImageView e ignorare il codice di personalizzazione del font nel metodo setupActionBar().
Edit2: Ho aggiornato il mio codice Java. Dovrai fare ab.setHomeAsUpEnabled (true), e poi avere un tema personalizzato per implementare un invisibile (o forse @null anche se non so se Android accetterà quello) drawable per la home come indicatore up. Vedi qui (preso dalla risposta here :)
<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
<!-- or you could try @null -->
</style>
per cui la soluzione alla voce di azione sulla sinistra potrebbe essere quella di fingere con UP pulsante come ho scritto nel primo commento, giusto? – urSus
Sì, e vorresti aggiungere uno stile personalizzato per Android: homeAsUpIndicator in modo da non ottenere quell'indicatore di chevron a sinistra. Aggiornerò con più codice. – dennisdrew
Come posso nascondere la freccia senza Android: homeAsUpIndicator? Richiede API 11 e il mio minimo è 8 –