¿Cómo podría hacer que una barra de acciones tenga un logotipo en el centro y dos elementos de acción en lados como este?Logotipo de ActionBar centrado y Elementos de acción en los lados
Me va a utilizar la Barra de acciones Sherlock.
¿Cómo podría hacer que una barra de acciones tenga un logotipo en el centro y dos elementos de acción en lados como este?Logotipo de ActionBar centrado y Elementos de acción en los lados
Me va a utilizar la Barra de acciones Sherlock.
Como noté en un comentario, no estoy exactamente seguro de si algo de esto cambiaría con ABS (estoy seguro que no mucho), pero con la barra de acciones estándar puede cargar un diseño personalizado .xml para su título de la barra de acción. Por ejemplo, usted podría tener 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>
Luego, en su actividad, que se quiere llamar a un método como este en 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);
}
para tomar el control de la izquierda elemento de acción, que podría hacer esto en su actividad:
@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);
}
}
por supuesto, asegúrese de que también lo hace el resto de las configuraciones necesarias para los elementos de acción en el menú de XML también. Esto será para cualquier elemento de acción del lado derecho.
Editar: Sólo vi en otro comentario que dijiste que el título sería una imagen. Si ese es el caso, simplemente reemplace el TextView que utilicé en mi ejemplo con su ImageView, y descarte el código de personalización de la fuente en el método setupActionBar().
Edit2: Actualicé mi código de Java. Tendrá que hacer ab.setHomeAsUpEnabled (true) y luego tener un tema personalizado para implementar un invisible (o tal vez @null aunque no sé si Android lo aceptará) dibujable para el inicio como indicador ascendente. Vea aquí (tomado de respuesta 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>
por lo que la solución al punto de acción de la izquierda sería que fingir usando el botón UP como escribí en el primer comentario, ¿verdad? – urSus
Sí, y usted querría agregar un estilo personalizado para android: homeAsUpIndicator para que no obtenga ese indicador de chevron izquierdo. Voy a actualizar con más código. – dennisdrew
¿Cómo puedo ocultar la flecha sin android: homeAsUpIndicator? Requiere API nivel 11 y mi mínimo es 8 –