app:showAsAction="ifRoom" 不起作用。

3

我是Android新手,遇到了一个似乎很普遍的问题。但是所有的解决方案都没有起作用,所以我无法找出问题所在。

我的菜单中有2个项目(搜索,按商店分类),我想在操作栏中显示搜索。然而,app:showAsAction="ifRoom" 没有将搜索移动到操作栏中,它仍然出现在溢出菜单中。

这是菜单的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/res-auto">
    <item android:id="@+id/shop_by"
        android:icon="@drawable/ic_shop_by"
        android:title="@string/shop_by_title"/>
    <item android:id="@+id/search"
        android:icon="@drawable/ic_search"
        android:title="@string/search"
        app:showAsAction="ifRoom"/>
</menu>

这里是我重写onCreateOptionsMenu的地方:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
    return true;
}

我错过了什么吗?

我尝试使用app:showAsAction="ifRoom|withText",但得到了相同的行为。

我尝试使用android:showAsAction="ifRoom",但出现了错误。

编辑: 解决了! app的命名空间应该像这样: xmlns:app="http://schemas.android.com/apk/res-auto"


如果您希望始终显示搜索选项,请使用“always”而不是“ifRoom”。 - olivejp
添加orderInCategory并不能将搜索移出溢出区 :( 但是,只要我可以更改溢出区中选项的顺序,它就能正常工作。 - Matt Fenlon
2
app 前缀的命名空间看起来不对。这是你做的还是 Android Studio 做的?它应该是 http://schemas.android.com/apk/res-auto,除非新版本有所更改。 - Mike M.
@MikeM. 赢了!感谢团队的帮助。 - Matt Fenlon
@MikeM。这确实有很大的区别!!那超出了我的雷达:P。你是冠军! - ישו אוהב אותך
显示剩余2条评论
2个回答

1

您需要尝试添加orderInCategory属性。类似这样:

<?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/shop_by"
        android:icon="@drawable/ic_shop_by"
        android:title="@string/shop_by_title"
        android:orderInCategory="100"/>
    <item android:id="@+id/search"
        android:icon="@drawable/ic_search"
        android:title="@string/search"
        android:orderInCategory="99"
        app:showAsAction="ifRoom"/>
</menu>

如果您希望始终显示菜单项,请使用app:showAsAction="always"
注意:答案已从xmlns:app="http://schemas.android.com/res-auto"更新为xmlns:app="http://schemas.android.com/apk/res-auto" 致谢@MikeM

添加 orderInCategory 不会将搜索移出溢出区 :( 但是,只要我可以更改溢出选项的顺序,它就可以正常运行。 - Matt Fenlon

-1
如果您正在使用
android.support.v7.app.Activity

XML应该与您的相似。

如果您正在使用

android.app.Activity

请使用:

android:showAsAction="ifRoom|withText"

替代

app:showAsAction="ifRoom|withText"

使用 android:showAsAction 会出现错误,提示我应该使用 appres-auto 库。 - Matt Fenlon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接