如何在ActionBar内显示动作图标和标题?
我需要在ActionBar
显示动作的icon
和title
。
我试过“带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.Menu
和com.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"/>
按着这些次序:
- 在Java代码中添加Action Bar实例
final ActionBar actionBar = getActionBar();
- 启用首页显示选项
actionBar.setDisplayShowHomeEnabled(false);
- 在相应的活动清单文件
android:logo=@drawable/logo and android:label="@string/actionbar_text"
添加以下代码
我认为这会帮助你
- ActionBarSherlock – 如何设置每个操作栏的图标的填充?
- 引起:java.lang.UnsupportedOperationException:无法转换为维:type = 0x1
- 将项目导入到Android Studio中有关ActionBarSherlock的问题
- 如何将库项目添加到Android Studio?
- 设置Slidemenu – 示例不工作
- 隐藏/显示操作栏选项菜单项为不同的片段
- ActionBarSherlock堆叠的行动酒吧造型问题
- 在ActionBarSherlock强制溢出菜单
- Android:getSupportActionBar()总是在ActionBarSherlock库中返回null