Android - держать меню настроек открытым - PullRequest
7 голосов
/ 19 ноября 2010

В моем приложении Android запущено и запущено меню «Параметры», и я переопределил методы onCreateOptionsMenu, onOptionsItemSelected и onPrepareOptionsMenu, чтобы немного настроить меню.

Мой вопрос касается сохранения меню «Параметры»после того, как пользователь нажимает на элемент меню.По сути, я хотел бы иметь возможность скрывать меню, пока пользователь не нажмет на кнопку меню устройства.После того, как пользователь нажмет эту клавишу, я бы хотел удерживать меню на месте независимо от того, сколько раз пользователь нажимал на пункты меню.Если пользователь хочет скрыть меню «Параметры», ему просто нужно снова нажать кнопку меню устройства.

Поддерживается ли этот тип взаимодействия (или даже рекомендуется).Если это взаимодействие не поддерживается, любые альтернативные предложения приветствуются.

Приветствия!

Шон

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

Это не будет возможно с onCreateOptionsMenu и другими методами. Они всегда так поступают.

Но вы можете сделать это по-другому. Но там вы должны запрограммировать все меню самостоятельно. В основном добавьте Меню в файл layout.xml и позвольте ему быть скрытым (видимость = исчезла). Затем вы перезаписываете методы onKeyDown. Там вы проверяете, является ли это клавишей меню. если меню еще не открыто да, то вы показываете меню. Если он уже открыт, вы скрываете его.

не должно быть слишком сложно. Хорошо также то, что вы можете заставить меню выглядеть именно так, как вы хотите, а также позволить ему реагировать так, как вы хотите.

2 голосов
/ 08 декабря 2018

Для любого, как я, кто нашел этот вопрос в Google:

Чтобы сохранить меню открытым после выбора пункта, вам нужен код:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    item.setChecked(!item.isChecked());

    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    item.setActionView(new View(this));
    item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return false;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            return false;
        }
    });
    return false;
}

Важно вернуть false в onOptionsItemSelected и методы OnActionExpandListener

Это решение от @MayurGajra. Подробнее здесь: Как удерживать меню переполнения после того, как я щелкну по нему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...