AppBarLayout.OnOffsetChangedListener метод onOffsetChanged постоянно вызывается - PullRequest
0 голосов
/ 10 июня 2018

Я использую OnOffsetChangedListener интерфейс для обнаружения изменения смещения AppBarLayout.Работает нормально, но проблема в том, что метод onOffsetChanged вызывается постоянно.Как я могу остановить этот непрерывный звонок.

   offsetChangedListener = (appBarLayout, verticalOffset) -> {
        Log.i(TAG, "onOffsetChanged: verticalOffset: " + verticalOffset);

        //  Vertical offset == 0 indicates appBar is fully expanded.
        if (Math.abs(verticalOffset) > 200) {
            appBarExpanded = false;
             invalidateOptionsMenu();
        } else {
            appBarExpanded = true;
             invalidateOptionsMenu();
        }
    };

Заранее спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Получил причину проблемы.Каждый раз, когда смещение AppBarLayout изменяется, этот код вызывает метод invalidateOptionsMenu().Этот invalidateOptionsMenu() метод воссоздает Menu и вызывает изменение смещения AppBarLayout.Так что onOffsetChanged метод вызывается снова и снова.Я удалил метод invalidateOptionsMenu() и изменил свою логику для достижения цели.

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