如何在ActionBar内显示动作图标和标题?

我需要在ActionBar显示动作的icontitle

我试过“带withText ”选项,但它没有效果。

在这里输入图像说明

如果有足够的空间,' always | withText '将起作用,否则只会放置图标。 您可以在手机上进行旋转testing。

 <item android:id="@id/menu_item" android:title="text" android:icon="@drawable/drawable_resource_name" android:showAsAction="always|withText" /> 

您可以通过以下两种方式创build文本操作:

1-从XML:

 <item android:id="@id/resource_name" android:title="text" android:icon="@drawable/drawable_resource_name" android:showAsAction="withText" /> 

膨胀菜单时,您应该调用getSupportMenuInflater()因为您正在使用ActionBarSherlock

2-以编程方式:

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT); item.setIcon(R.drawable.drawable_resource_name); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT); return true; } 

确保你导入了com.actionbarsherlock.view.Menucom.actionbarsherlock.view.MenuItem

对我而言,使用“ always | withText ”。 如果您有很多菜单,请考虑使用“ifRoom”而不是“always”。

 <item android:id="@id/resource_name" android:title="text" android:icon="@drawable/drawable_resource_name" android:showAsAction="always|withText" /> 

我find的解决scheme是使用自定义操作布局:这里是菜单的XML。

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:Eventapp="http://schemas.android.com/apk/res-auto"> <!-- This is a comment. --> <item android:id="@+id/action_create" android:actionLayout="@layout/action_view_details_layout" android:orderInCategory="50" android:showAsAction = "always"/> </menu> 

布局是

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="5dp" android:gravity="center" android:text="@string/create"/> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="5dp" android:paddingRight="5dp" android:gravity="center" android:src="@drawable/ic_action_v"/> </LinearLayout> 

这将一起显示图标和文字。

要获得clickitem的片段或活动,请执行以下操作:

 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { //super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_details_fragment, menu); View view = menu.findItem(R.id.action_create).getActionView(); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show(); } }); } 

如果在2017年any1想知道如何做到这一点编程,有一种方法,我没有看到答案

 .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

你们中的一些人有很好的答案,但我发现了一些额外的事情。 如果您想以编程方式使用某个SubMenu创build一个MenuItem:

  @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu subMenu = menu.addSubMenu(0, Menu.NONE, 0, "Menu title"); subMenu.getItem().setIcon(R.drawable.ic_action_child); subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); subMenu.add(0, Menu.NONE, 0, "Subitem 1"); subMenu.add(0, Menu.NONE, 1, "Subitem 2"); subMenu.add(0, Menu.NONE, 2, "Subitem 3"); return true; } 

您可以在工具栏中添加button

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay" app:title="title"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginRight="16dp" android:background="@color/transparent" android:drawableRight="@drawable/ic_your_icon" android:drawableTint="@drawable/btn_selector" android:text="@string/sort_by_credit" android:textColor="@drawable/btn_selector" /> </android.support.v7.widget.Toolbar> 

在drawable中创build文件btn_selector.xml

 <?xml version="1.0" encoding="utf-8" ?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android">

 <item android:state_selected="true" android:color="@color/white" /> <item android:color="@color/white_30_opacity" /> 

Java的:

private boolean isSelect = false;

OnClickListenerbutton:

 private void myClick() { if (!isSelect) { //**your code**// isSelect = true; } else {//**your code**// isSelect = false; } sort.setSelected(isSelect); } 

使用app:showAsAction =“always | withText”。 我正在使用Android 4.1.1,但无论如何它应该适用。 我的样子如下

 <item android:id="@+id/action_sent_current_data" android:icon="@drawable/ic_upload_cloud" android:orderInCategory="100" android:title="@string/action_sent_current_data" app:showAsAction="always|withText"/> 

按着这些次序:

  1. 在Java代码中添加Action Bar实例final ActionBar actionBar = getActionBar();
  2. 启用首页显示选项actionBar.setDisplayShowHomeEnabled(false);
  3. 在相应的活动清单文件android:logo=@drawable/logo and android:label="@string/actionbar_text"添加以下代码

我认为这会帮助你