app:showAsAction ifRoom无法在appcompat操作栏上运行

aac*_*kin 7 android

我有一个带有以下菜单项的操作栏;

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

    <item android:id="@+id/action_search"
        android:icon="@drawable/search"
        android:title="@string/action_search"
        android:orderInCategory="1"
        app:showAsAction="ifRoom|withText"/>

    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="5"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/action_waiter"
        android:title="@string/action_waiter"
        android:orderInCategory="6"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/action_cleantable"
        android:title="@string/action_cleantable"
        android:orderInCategory="7"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/action_suggest"
        android:title="@string/action_suggest"
        android:orderInCategory="8"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/action_waiterlogin"
        android:title="@string/action_waiterlogin"
        android:orderInCategory="9"
        app:showAsAction="ifRoom"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

问题是我的搜索按钮没有显示在操作栏上但文本显示为溢出.我的行动吧里有足够的空间

我正在使用 "@style/Theme.AppCompat.Light"

谁能帮我 ?

Emi*_*enT 9

请尝试使用 android:showAsAction="ifRoom|withText"而不是 app:showAsAction="ifRoom|withText"

  • 哦它确实奏效了.我认为在AppCompat中,我们需要使用`app:showAsAction`.谢了哥们 (3认同)
  • Android Studio出错.使用appcompat库时,菜单资源应该引用app:namespace中的showAsAction,而不是android:namespace. (3认同)

Mar*_*aso 5

就我而言,我不得不向 onCreateOptionsMenu 添加几行。

Android Studio 不允许我在使用 appCompat 时使用 android:showAsAction="ifRoom"。

app:showAsAction="ifRoom" 不起作用,我毫无问题地将其删除。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater  inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        for (int i = 0; i < menu.size(); i++) {
            menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
        }
        return super.onCreateOptionsMenu(menu);
    }
Run Code Online (Sandbox Code Playgroud)