我正在使用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();
}
};
提前致谢。
答案 0 :(得分:1)
找到了问题的原因。每次AppBarLayout的偏移量改变该代码调用invalidateOptionsMenu()
方法。此invalidateOptionsMenu()
方法重新创建Menu
并导致AppBarLayout的偏移更改。因此,一次又一次地调用onOffsetChanged
方法。我已删除了invalidateOptionsMenu()
方法并更改了我的逻辑以实现我的目标。