我需要在ActionBar
中同时显示动作的icon
和title
。
我尝试过"withText
“选项,但没有任何效果。
发布于 2015-09-02 18:06:49
我找到的解决方案是使用自定义操作布局:以下是菜单的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>
这将同时显示图标和文本。
要获取片段或活动的点击项,请执行以下操作:
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-02-14 22:44:52
如果2017年的any1想知道如何通过编程来实现这一点,有一种我在答案中看不到的方法
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
发布于 2015-08-17 03:20:43
你们中的一些人有很好的答案,但我发现了一些额外的东西。如果您希望以编程方式创建包含某些SubMenu的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;
}
https://stackoverflow.com/questions/12000562
复制相似问题