如何在android中设置左右两个自定义的操作栏button?

我正在使用Sherlock库,我也自己执行。 我的问题是,我在菜单中添加了两个项目,现在我想在操作栏左边的一个项目,第二个在操作栏的右边。 如何去呢?

Solutions Collecting From Web of "如何在android中设置左右两个自定义的操作栏button?"

你可以创build这样的动作栏,但比起菜单来说要复杂一点。 在onCreateOptionsMenu()方法中创build的菜单将始终alignment到右侧,放置在拆分操作栏中​​或隐藏在菜单键下。

如果你想要你的动作栏只包含两个菜单项 – 一个在左边,另一个在右边 – 你必须在操作栏中创build自定义视图。

自定义视图布局将如下所示:

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

除了Tomik的回答 。 你需要添加

 ab.setDisplayShowCustomEnabled(true); 

在onCreate方法,否则自定义视图不会出现(至less对我而言)。