AppBarLayout.OnOffsetChangedListener onOffsetChanged方法不断调用

时间:2018-06-10 15:28:18

标签: android android-appbarlayout appbar

我正在使用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 :(得分:1)

找到了问题的原因。每次AppBarLayout的偏移量改变该代码调用invalidateOptionsMenu()方法。此invalidateOptionsMenu()方法重新创建Menu并导致AppBarLayout的偏移更改。因此,一次又一次地调用onOffsetChanged方法。我已删除了invalidateOptionsMenu()方法并更改了我的逻辑以实现我的目标。