Предотвратить закрытие OptionsMenu при установке флажка - PullRequest
1 голос
/ 18 января 2011

Я хочу показать флажок в верхней части экрана, чтобы позволить пользователю включить экранную блокировку, и я хочу показать этот флажок, только если он открывает меню параметров.Я могу сделать это, переопределив эти 2 метода

@Override
public boolean onMenuOpened(int featureId, Menu menu) {
    checkbox.setVisibility(View.VISIBLE);
    return super.onMenuOpened(featureId, menu);
}
@Override
public void onOptionsMenuClosed(Menu menu) {
    checkbox.setVisibility(View.GONE);
    super.onOptionsMenuClosed(menu);
}

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

Итак, мой вопрос прост: как я могу предотвратить закрытие меню параметров при касании флажка?

1 Ответ

3 голосов
/ 17 мая 2011

Браузер Android Android отображает панель заголовка, которую можно щелкать, пока открыто меню Поэтому их решение должно соответствовать и вашей проблеме.

Панель заголовка отображается с помощью WindowManager:

WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

// Add the title bar to the window manager so it can receive touches
// while the menu is up
WindowManager.LayoutParams params
        = new WindowManager.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_APPLICATION,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP;
manager.addView(mFakeTitleBar, params);

Чтобы удалить его (когда меню закрыто или пользователь щелкает его)

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