【问题标题】:Is it possible to have a action bar menu using the appcompat library?是否可以使用 appcompat 库创建操作栏菜单?
【发布时间】:2013-07-28 14:38:14
【问题描述】:

最近我从常规操作栏实现切换到最近发布的 appcompat 实现。我的应用大量使用了操作栏来提供功能。自切换以来,在较旧的位置 API(少于 11 个)没有任何菜单项。较新的 API 可以,但它们不会像配置的那样显示图像(如果 room|withText)。有没有其他人经历过这种情况或提出任何解决方案?

【问题讨论】:

    标签: android menu android-actionbar android-appcompat


    【解决方案1】:

    我在使用 appcompat 库时发现了问题。您可以像平常一样创建菜单。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
       return true;
    }
    

    但是,在您的菜单 xml 文件中,将 xmlns:app 属性添加到菜单标签,如下所示:

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    

    然后,在您通常指定“showAs”样式(ifRoom、withText 等)的每个菜单项中,在常规行旁边包含此替代行:

    app:showAsAction="ifRoom|withText"
    android:showAsAction="ifRoom|withText"
    

    在此之后,您的菜单将在当前和旧 API 上正确显示。我从here 获得了这些信息。

    【讨论】:

    • 除了@David Wood 的回答之外,您还应该在代码中添加 setHasOptionsMenu(true) 语句,以通知您除了默认菜单之外还有一个要使用的菜单
    【解决方案2】:

    如果设备上有物理“菜单”按钮,它将显示上下文菜单。如果没有,菜单项将被添加到 ActionBar。

    【讨论】:

    • 谢谢,但在 2.2 中没有向 ActionBar 添加任何项目?
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多