当前位置: 首页 > 知识库问答 >
问题:

检测AppBarLayout/CollapsingToolBarLayout何时完全展开

訾高明
2023-03-14

我有一个片段使用了新的CoordinatorLayout/AppBarLayout/CollapsingToolBarLayout范例,我希望能够检测折叠工具栏何时完全展开,以便对它所在的整个片段执行操作,例如从堆栈中弹出片段并转到新的堆栈中,删除该片段。我有解散的代码工作,我只需要知道什么时候和什么时候不使用它。

提前感谢!

编辑:我还看到AppBarlayout.SetExpanded(...)有两个实现,但是没有AppBarlayout.GetExpanded()或类似的东西,所以我也被难住了。

共有1个答案

龙昊焱
2023-03-14

看起来API中没有任何内容,但下面的内容似乎对我有用。可能需要测试

boolean fullyExpanded =
    (appBarLayout.getHeight() - appBarLayout.getBottom()) == 0;

Edit:上面的解决方案似乎确实有效,但是由于我想在appbar滚动时测试这种情况,所以我最终使用了下面的解决方案:onoffsetchangedListener

class Frag extends Fragment implements AppBarLayout.OnOffsetChangedListener {

    private boolean appBarIsExpanded = true;
    private AppBarLayout appBarLayout;

    @Override 
    public void onActivityCreated(Bundle state) {
        super.onActivityCreated(state);
        appBarLayout = (AppBarLayout) getActivity().findViewById(R.id.app_bar);
    }

    @Override
    public void onResume() {
        super.onResume();
        appBarLayout.addOnOffsetChangedListener(this);
    }

    @Override
    public void onStop() {
        super.onStop();
        appBarLayout.removeOnOffsetChangedListener(this);
    }

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        appBarIsExpanded = (verticalOffset == 0);
    } 

}
 类似资料:
  • 问题内容: 在我的应用程序中,我尝试为用户打印出凭证页面,如下所示: “ ”是我的页面中的,用于存储有关凭证的信息。 它有效,并且打印页面弹出。但是,我希望用户一旦在浏览器的弹出式打印对话框中单击“ ”或“ ”,便可以升级该应用程序。 例如,我想在弹出窗口关闭后将用户重定向到另一个页面: 如何确定何时关闭弹出的打印窗口或打印完成? 问题答案: 在FireFox和Internet Explorer中

  • 我正在建设与许多碎片的单一活动应用程序,我正在使用Jetpack导航组件。我在工具栏中有,这样当用户滚动内容时,工具栏就可以滚动,可以提供很大的空间,它可以正常工作。 但是在一个片段中,我有SearchView in Action Bar菜单,所以当用户从具有可滚动内容的片段导航到这个搜索片段时,SearchView和其他菜单项将自动隐藏。如何在创建/显示每个片段时使ActionBar/ToolB

  • 问题内容: 我正在一个拥有大量嵌入式youtube视频的网站上工作,客户端希望在视频停止播放时显示弹出窗口。 我看着youtube api,似乎有一种方法可以检测视频何时结束: http://code.google.com/apis/youtube/js_api_reference.html 但是我无法像在该页面上提到的那样嵌入视频,因为这些视频都已经在网站上(数千个通过粘贴嵌入代码手动添加)。

  • 问题内容: 好的,我在应用程序代码周围无数次通话, 我想知道是否有什么方法/最佳实践来检测应用程序周围的所有内容何时完成(成功/错误完成与返回什么无关,只需要知道是否完成)? 这样我才能显示加载的gif,直到它们加载为止? 谢谢 问题答案: 像这样做: 然后使用绑定到任何地方的事件(最好在指令中使用):

  • 作为这个问题的前言,请注意,我不是问“修复我的代码”,而是问我将使用什么技术来修复这个问题。如果我的拼写不是很好,我也要道歉。 好吧,我有一个2D平台游戏,比较玩家的位置和所有的瓷砖(在一个循环中),解决了相应的冲突。这是主要游戏循环的结构: 检查所有碰撞(如果玩家发生碰撞,则启用跳跃) 获取输入并相应更改播放器速度 将重力添加到Y速度 对球员位置施加速度和摩擦力 绘制游戏 重复 问题1。当玩家在

  • 我知道在等待之后deadlock_timeout开始死锁检测,并中止事务。然而,我有一种情况,事务似乎停滞了几个小时(等待SELECT… for UPDATE),没有解决。我的日志确实显示postgres检测到一些死锁,但我想知道是否有可能有更复杂的死锁,postgres无法检测到?