Cómo ir al icono de Centro en la barra de acción de Android

Estoy tratando de centrar el icono en la barra de acción de Android. Estoy usando un diseño personalizado que tiene un botón en el lado izquierdo, un icono en el centro y las opciones de menú a la derecha.

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ActionBarWrapper" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageButton android:id="@+id/slideMenuButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_menu_bookmark" /> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_centerInParent="true" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:layout_centerInParent="true" /> </RelativeLayout> </RelativeLayout> 

He intentado esto con y sin el RelativeLayout que envuelve el ImageView. El botón izquierdo se muestra muy bien, y puedo configurar el icono con layout_toRightOf, pero no puedo conseguirlo al centro. ¿Alguien tiene alguna idea?

Edit: Aquí está el código de android en el método de crear.

 ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayUseLogoEnabled(false); actionBar.setDisplayHomeAsUpEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayOptions(actionBar.DISPLAY_SHOW_CUSTOM); View cView = getLayoutInflater().inflate(R.layout.actionbar, null); actionBar.setCustomView(cView); 

Bueno. Esto debería funcionar. Prueba esto ( Probado en actividad normal ):

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ActionBarWrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal"> <ImageButton android:id="@+id/slideMenuButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:layout_alignParentLeft="true" /> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:layout_centerVertical="true" android:layout_centerInParent="true" /> </RelativeLayout> 

Las respuestas anteriores no funcionan para mí (en dispositivos Android 4.4), porque los grupos de vista de contenedores externos no se expandieron al máximo, por lo que el grupo de contenedores y el logotipo interior centrado ya estaban alineados en la barra de título.

He encontrado un diseño que funciona con el menú de barra de acción regular (en el lado derecho) e independientemente de permitir el logotipo de la barra de acción regular y el título (en el lado izquierdo). Este ejemplo sólo centra un logotipo adicional.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_logo" android:layout_gravity="center_vertical" android:contentDescription="Logo" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> 

Debe habilitar la vista personalizada

 ActionBar actionBar = getActionBar(); actionBar.setDisplayShowCustomEnabled(true); View cView = getLayoutInflater().inflate(R.layout.actionbar, null); actionBar.setCustomView(cView); 

Pero no este método (desactiva todos los demás elementos en la barra de acción).

 // actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

Puede agregar una vista personalizada a la barra de acción. Simplemente agregue un LinearLayout como la vista personalizada y agregue vistas secundarias al lineallayout. Utilicé esta técnica para añadir 4 botones en el medio.

Para agregar una vista personalizada, utilice actionBar.setCustomView (view). También establezca la opción DISPLAY_SHOW_CUSTOM usando actionBar.setDisplayOptions.

Una vez que tenga una vista personalizada en la barra, utilice los procedimientos de disposición normales para obtener el efecto deseado. Un truco que podría utilizar sería tener 3 layouts lineales anidados y asignar a cada uno un peso. Por ejemplo 1,4,1 por lo que el diseño del centro obtiene el mayor espacio. Aquí está un ejemplo, por supuesto usted puede dejar hacia fuera los botones en la disposición derecha del lado si usted quisiera que fuera en blanco. Con este enfoque se puede lograr el centro exacto.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#F00" android:orientation="horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:background="#0F0" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#00F" android:gravity="right" android:orientation="horizontal" > <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> </LinearLayout> 
  • Evitar que un FloatingActionButton se desplace dentro de ViewPager
  • Slide ExpandableListView at DrawerLayout formulario de derecha a izquierda
  • Los atributos de anchura y altura de la distribución de restricciones se restablecen automáticamente a 0dp
  • TransitionDrawable con nueve parches - el margen es incorrecto
  • Cómo cambiar el tamaño LinearLayout del código
  • Cómo mostrar advertencia / error si el id de recurso utilizado pertenece a otro esquema de actividad
  • Coloque 3 botones en un LinearLayout para ocupar la misma cantidad de espacio
  • ¿Es esta la forma correcta de obtener el efecto de rizo en los dispositivos pre-piruletas?
  • Distribución de espacio LinearLayout
  • Superposición u ocultar Barra de herramientas en la selección de copia / corte
  • Vista de lista de Android dentro de una vista de desplazamiento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.