在CoordinatorLayout上以编程方式隐藏/显示工具栏

Art*_*tem 44 android android-toolbar android-recyclerview

当我滚动RecycleView ToolBar隐藏或显示(带动画)时. 在此输入图像描述

我如何以ToolBar编程方式返回?

Jra*_*o11 102

如果您的工具栏位于AppBarLayout内,该AppBarLayout可能位于您的CoordinatorLayout内,那么这样的东西应该可以工作.

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(true, true);
Run Code Online (Sandbox Code Playgroud)

或者崩溃它

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(false, true);
Run Code Online (Sandbox Code Playgroud)

这是定义

setExpanded(boolean expanded, boolean animate)
Run Code Online (Sandbox Code Playgroud)

请注意,此方法可从支持库的v23获得,这里有一些文档供参考,需要注意的关键是" 与AppBarLayout的滚动一样,此方法依赖于此布局是CoordinatorLayout的直接子项. "希望这样帮助!


joh*_*o07 10

这就是你要找的?

Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);  // clear all scroll flags
Run Code Online (Sandbox Code Playgroud)

链接:如何在使用设计支持库时以编程方式启用/禁用工具栏滚动

为了隐藏工具栏,您可以执行以下操作:

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();
Run Code Online (Sandbox Code Playgroud)

如果您想再次显示它,请致电:

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
Run Code Online (Sandbox Code Playgroud)