1

虽然我可以在我的 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;
}   

产生这个显示:

在此处输入图像描述

4

1 回答 1

2

没关系。

溢出菜单仅显示文本。仅当项目在操作栏中显示为操作时才使用图标。

如果您想查看操作栏中的图标,您必须使用

android:showAsAction="ifRoom"

代替

showAsAction="ifRoom"
于 2012-05-21T16:37:22.440 回答