Новая панель инструментов Android: как скрыть значок меню переполнения?

Я только что создал приложение, включающее новую панель инструментов Android. Моя проблема: Как мне скрыть значок / кнопку этого меню переполнения: http://prntscr.com/62mmus? Я уже пробовал это, но это не работает:

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

5 ответов

Решение

Просто используйте:

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

Вот как я это сделал.

Это мой оригинальный файл 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" />

Перейдите к своей основной деятельности и закомментируйте следующее 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);
}

Запустите ваше приложение - значок меню переполнения исчез.

У меня получилось: добавить следующее: 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"

    />

Просто верните false при вызове метода onCreateOptionsMenu

Пример:

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

Используйте команду invalidateOptionsMenu();

И ваши проблемы будут решены.

Не реализовывать onCreateOptionsMenu(Menu menu)метод. Если да, то не используйте этот методgetMenuInflater().inflate(R.menu.main, menu); как эта строка в onCreateOptionsMenu метод раздувает кнопку переполнения с меню, объявленным в ресурсе R.menu.main.

У меня это сработало, я просто удалил строку getMenuInflater(). Inflate(R.menu.main_activity, menu);

Другие вопросы по тегам