如何在 AppCompatActivity 中显示带有图标和文本的菜单项 [英] How to display menu item with icon and text in AppCompatActivity
问题描述
我在xml文件中尝试了不同的组合:
I tried different combinations in xml file:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_create_alarm"
android:icon="@drawable/ic_action_accept"
android:orderInCategory="100"
android:title="@string/menu_create_alarm"
app:showAsAction="ifRoom|withText" />
</menu>
或
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_create_alarm"
android:icon="@drawable/ic_action_accept"
android:orderInCategory="100"
android:title="@string/menu_create_alarm"
app:showAsAction="always|withText" />
</menu>
或
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_create_alarm"
android:icon="@drawable/ic_action_accept"
android:orderInCategory="100"
android:title="@string/menu_create_alarm"
app:showAsAction="withText" />
</menu>
或
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_create_alarm"
android:icon="@drawable/ic_action_accept"
android:orderInCategory="100"
android:title="@string/menu_create_alarm"
android:showAsAction="always|withText" />
</menu>
我试图以编程方式设置它
I tried to set it programmaticly
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
MenuItem item = menu.add(R.string.menu_create_alarm);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT|MenuItem.SHOW_AS_ACTION_IF_ROOM);
item.setIcon(R.drawable.ic_action_accept);
item.setOnMenuItemClickListener(
new OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item){
saveAlarm();
return true;
}
}
);
// inflater.inflate(R.menu.menu_create_alarm, menu);
super.onCreateOptionsMenu(menu, inflater);
}
或
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_create_alarm"
android:icon="@drawable/ic_action_accept"
android:orderInCategory="100"
android:title="@string/menu_create_alarm"
android:showAsAction="always|withText"
app:showAsAction="always|withText" />
</menu>
但是,仅显示图标.而且还有很多房间,因为我没有设置工具栏标题.删除菜单并用工具栏中的按钮替换它们是不可行的.
如何显示文本?
However, Only Icon appears. And there is planty of room, cause I did not set toolbar title. Removing menues and replasing them with button inside toolbar is not sutable.
How to display text?
推荐答案
您可以使用以下代码来确定您的目的.无需使其程序化.你可以在 menu.xml 文件中欺骗.
You can use following code for establishing your purpose. No need to make it programmatic. You can trick in menu.xml file.
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/overflowMenu"
android:icon="@drawable/ic_more_vert_white_24dp"
android:title=""
app:showAsAction="always">
<menu>
<item
android:id="@+id/menuWithIconText"
android:icon="@drawable/chosen_icon"
android:title="@string/menu_item_title"
/>
</menu>
</item>
在上面的代码中,我们在 item
内部使用了 menu
.在内部菜单中,我们用图标定义了我们想要的溢出菜单.请记住在 item
标签外使用 app:showAsAction="always"
.
In above code, we've used menu
inside of item
. In inside menu, we've defined our overflow menu which we want with icon. Just remember to use app:showAsAction="always"
in outside item
tag.
这篇关于如何在 AppCompatActivity 中显示带有图标和文本的菜单项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!