14

ユーザーが ActionBar のオーバーフロー メニュー (3 つのドット) を開いたり閉じたりしたときに、次のようにリッスンしたい:

void onOverflowMenu(boolean expanded) {
}

未解決のケースを処理するために を試しましonPrepareOptionsMenu()たが、ActionBar が構築されたとき、またはinvalidateOptionsMenu()が呼び出されたときにトリガーされます。これは私が望むものではありません。

ユーザーが でメニュー項目を選択すると、オーバーフロー メニューが閉じていることを検出できましたonMenuItemSelected()。しかし、ユーザーがオーバーフローメニューの外側をタップしたり、戻るキーを押したり、その他すべての場合に閉じたりした場合も、それを検出したいと考えています。

それを実装する方法はありますか?

4

2 に答える 2

6

IMHO最も簡単な方法は、設定することですActionBar.OnMenuVisibilityListener

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    actionBar.addOnMenuVisibilityListener(new ActionBar.OnMenuVisibilityListener() {
        @Override
        public void onMenuVisibilityChanged(boolean isVisible) {
            if (isVisible) {
                // menu expanded
            } else {
                // menu collapsed
            }
        }
    });
}
于 2017-08-25T12:51:07.790 に答える