android - AppBarLayout.OnOffsetChangedListener onOffsetChanged 方法不断调用

标签 android android-appbarlayout appbar

我正在使用 OnOffsetChangedListener检测AppBarLayout偏移变化的接口(interface)。它工作正常,但问题是 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() 方法并更改我的逻辑以实现我的目标。

关于android - AppBarLayout.OnOffsetChangedListener onOffsetChanged 方法不断调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785220/

相关文章:

android - 使用手机摄像头,在捕获图像 Activity 后不会返回到特定 Activity

android - 在 OSX 的 mupdf 上运行 ndk-build 时使用哪个编译器?

android - 通过滚动按钮单击隐藏后显示工具栏

xaml - AppBar中的图标和文字随机消失

flutter - 如何在flutter上的appBar中的图标之间导航?

android - 如何以编程方式在 miutorrent 中打开 .torrent 文件

java - 带有 boolean 值的开关/案例请求

android - CollapsingToolbarLayout 包含 ViewPager 和其中的搜索框。如何防止搜索框只折叠,而ViewPager折叠

android - 如何同步两个 CoordinatorLayout + AppBarLayout 的滚动

kotlin - 我正在尝试使用 Jetpack Compose 在 Android 中设置背景图片,但图片无法填满整个页面