无法在XML中设置动作栏图标
-
12-12-2019 - |
题
虽然我可以在我的Java代码中设置动作栏图标,但我无法在我在XML中设置它们时显示它们。我更喜欢将它们放在XML中。
下面是我的两次尝试实现同样的事情 - 动作栏上的三个图标。你能解释为什么第二种方法失败了吗?
(注意,在我的最终版本中,我打算在溢出菜单中保持三个中的两个,我只是在测试期间显示所有三个。)
这个XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuConfig"
android:title="Configuration"
/>
<item android:id="@+id/menuAbout"
android:title="About"
/>
<item android:id="@+id/menuHelp"
android:title="Help"
/>
</menu>
.
和这个java:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optionsmenu, menu);
MenuItem settings = menu.findItem(R.id.menuConfig);
settings.setIcon(R.drawable.settings);
settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
MenuItem about = menu.findItem(R.id.menuAbout);
about.setIcon(R.drawable.about);
about.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
MenuItem help = menu.findItem(R.id.menuHelp);
help.setIcon(R.drawable.help);
help.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
.
产生此显示:
,此XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuConfig"
android:title="Configuration"
android:icon="@drawable/settings"
showAsAction="ifRoom"
/>
<item android:id="@+id/menuAbout"
android:title="About"
android:icon="@drawable/about"
showAsAction="ifRoom"
/>
<item android:id="@+id/menuHelp"
android:title="Help"
android:icon="@drawable/help"
showAsAction="ifRoom"
/>
</menu>
.
和这个java:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optionsmenu, menu);
return true;
}
.
产生此显示:
解决方案
没关系。
溢出菜单仅显示文本。只有当项目在动作栏中显示为动作时才使用该图标。
如果要查看动作栏中的图标,则必须使用
android:showAsAction="ifRoom"
.
而不是
showAsAction="ifRoom"
. 不隶属于 StackOverflow