AppBarLayout.OnOffsetChangedListener onOffsetChanged 方法不断调用
AppBarLayout.OnOffsetChangedListener onOffsetChanged method is calling continously
我正在使用 OnOffsetChangedListener interface to detect AppBarLayout's offset change. It working fine but the problem is 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();
}
};
提前致谢。
找到问题原因了。每次 AppBarLayout 的偏移量发生变化时,代码都会调用 invalidateOptionsMenu()
方法。此 invalidateOptionsMenu()
方法重新创建 Menu
并导致 AppBarLayout 的偏移量更改。所以 onOffsetChanged
方法被一次又一次地调用。我已经删除了 invalidateOptionsMenu()
方法并更改了我的逻辑以实现我的目标。
我正在使用 OnOffsetChangedListener interface to detect AppBarLayout's offset change. It working fine but the problem is 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();
}
};
提前致谢。
找到问题原因了。每次 AppBarLayout 的偏移量发生变化时,代码都会调用 invalidateOptionsMenu()
方法。此 invalidateOptionsMenu()
方法重新创建 Menu
并导致 AppBarLayout 的偏移量更改。所以 onOffsetChanged
方法被一次又一次地调用。我已经删除了 invalidateOptionsMenu()
方法并更改了我的逻辑以实现我的目标。