Cómo configurar dos botones de barra de acción personalizada en la izquierda y la derecha en android?

Estoy usando la biblioteca de Sherlock y también implemento conmigo mismo. Mi problema es que he añadido dos elementos en el menú, ahora quiero 1 elemento en la izquierda de la barra de acción y el segundo en el derecho de barra de acción. ¿Cómo hacerlo?

Puede crear tal barra de acción, pero es poco más complicado que inflar un menú. El menú creado en el método onCreateOptionsMenu() siempre se alineará a la derecha, se colocará en la barra de acción dividida o se oculta debajo de la tecla de menú.

Si desea que su barra de acción contenga sólo dos elementos de menú, uno en el borde izquierdo y el otro en el borde derecho, debe crear una vista personalizada en la barra de acción.

El diseño de vista personalizada será algo como esto:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:src="@drawable/ic_menu_item1" android:background="?attr/actionBarItemBackground" android:layout_width="?attr/actionBarSize" android:layout_height="match_parent" android:scaleType="centerInside" android:id="@+id/item1" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/> <ImageButton android:src="@drawable/ic_menu_item2" android:background="?attr/actionBarItemBackground" android:layout_width="?attr/actionBarSize" android:layout_height="match_parent" android:scaleType="centerInside" android:id="@+id/item2" android:layout_alignParentRight="true" android:layout_alignParentTop="true"/> </RelativeLayout> 

Defina en el tema que desea utilizar vista personalizada. El tema debe contener:

 <style name="MyTheme" parent="@style/Theme.Sherlock"> <item name="actionBarStyle">@style/MyActionBarStyle</item> <item name="android:actionBarStyle">@style/MyActionBarStyle</item> </style> <style name="MyActionBarStyle" parent="@style/Widget.Sherlock.ActionBar"> <item name="displayOptions">showCustom</item> <item name="android:displayOptions">showCustom</item> </style> 

Establezca la vista personalizada en la actividad (o fragmento):

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar ab = getSherlock().getActionBar(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // ... } }); } 

Debe agregar los oyentes de clics para los elementos del menú. No se puede usar onOptionsItemSelected() en este caso.

Además de la respuesta de Tomik . Necesitas agregar

 ab.setDisplayShowCustomEnabled(true); 

en el método onCreate, de lo contrario la vista personalizada no aparece (al menos para mí).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.