【问题标题】:Failing to set Action Bar icons in xml无法在 xml 中设置操作栏图标
【发布时间】:2012-05-21 16:26:19
【问题描述】:

虽然我可以在我的 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 android-actionbar android-icons


    【解决方案1】:

    没关系。

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

    如果你想在操作栏中看到图标,你必须使用

    android:showAsAction="ifRoom"
    

    而不是

    showAsAction="ifRoom"
    

    【讨论】:

    • 是的,但我不希望项目(或至少其中一项)出现在溢出菜单中。我希望配置在操作栏上,如果我不能在 XML 中实现它,那么我必须处理我的代码在 API 级别 11 之前不起作用。
    • 你应该调用 super.onCreateOptionsMenu(menu);在 onCreateOptionsMenu()
    • 好的,但这并不能解决我的问题。
    • 我做到了!我怎么能错过呢?谢谢,就是这样。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多