Как установить две пользовательские кнопки в левой и правой частях андроида?

Я использую библиотеку Шерлока, и я также реализую с собой. Моя проблема в том, что я добавил два пункта в меню, теперь я хочу 1 элемент слева от панели действий и второй справа от панели действий. Как к этому?

Вы можете создать такую ​​панель действий, но это немного сложнее, чем раздувание меню. Меню, созданное в onCreateOptionsMenu() , всегда выравнивается вправо, помещается в панель действий split или скрывается под клавишей меню.

Если вы хотите, чтобы панель действий содержала только два элемента меню: один на левом краю, а другой на правом краю – вам нужно создать пользовательский вид в панели действий.

Пользовательский макет представления будет примерно таким:

 <?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> 

Определите в теме, что вы хотите использовать пользовательский вид. Тема должна содержать:

 <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> 

Установите пользовательский вид в активности (или фрагменте):

 @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) { // ... } }); } 

Вы должны добавить слушателей кликов для пунктов меню. В этом случае вы не можете использовать onOptionsItemSelected() .

Кроме того , ответ Томика . Вы должны добавить

 ab.setDisplayShowCustomEnabled(true); 

В методе onCreate, иначе пользовательский вид не появится (по крайней мере, для меня).