如何在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>
我尝试以编程方式设置
@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屋!