新 Android 工具栏:如何隐藏溢出菜单图标?

New Android Toolbar: How to hide the overflow menu icon?

我刚刚创建了一个包含新 Android 工具栏的应用程序。我的问题是:如何隐藏这个溢出菜单 icon/button: http://prntscr.com/62mmus ? 我已经试过了,但没用:

        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mToolbar.hideOverflowMenu();

我就是这样做的。

这是我在菜单文件夹下的原始menu_main.xml文件:

<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=".MainActivity">
    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

删除项目:

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

转到主 activity 并注释掉以下内容 if (id == R.id.action_settings) :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
   // if (id == R.id.action_settings) {
   //     return true;
   // }

    return super.onOptionsItemSelected(item);
}

运行 您的应用 - 溢出菜单图标消失了。

只需使用:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
        return false;
}

调用方法onCreateOptionsMenu

时只是return false

例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!showToolbarMenu)
        return false;
    getMenuInflater().inflate(R.menu.main_activity, menu);
    return super.onCreateOptionsMenu(menu);
}

使用命令 invalidateOptionsMenu();

你的问题就迎刃而解了。

对我有用的是: 添加以下内容: android:visible="false"到菜单文件夹中的菜单文件(global.xml)中的菜单项。

例如:

 <item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"
    android:visible="false"

    />

这对我有用,我只是删除了行 getMenuInflater().inflate(R.menu.main_activity, menu);

不要实施 onCreateOptionsMenu(Menu menu) 方法。如果您仍然这样做,请不要使用此方法 getMenuInflater().inflate(R.menu.main, menu);,因为 onCreateOptionsMenu 方法中的这一行会使用资源 R.menu.main.

中声明的菜单膨胀溢出按钮