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

时间:2015-11-27 13:52:38

标签: android android-toolbar android-recyclerview

当我滚动RecycleView ToolBar隐藏或显示(带动画)时。 enter image description here

如何以编程方式返回ToolBar

3 个答案:

答案 0 :(得分:91)

如果您的工具栏位于AppBarLayout内,该AppBarLayout可能位于您的CoordinatorLayout内,则此类内容应该有效。

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(true, true);

或者将其折叠

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(false, true);

这是定义

setExpanded(boolean expanded, boolean animate)

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

答案 1 :(得分: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

link:How to enable/disable toolbar scrolling programmatically when using design support library

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

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();

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

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();

答案 2 :(得分:0)

我的问题与@Artem非常相似我试过很多修复,但没有一个对我有效。使用AppBarLayout时,@ Jraco11的答案是正确的。 @ johnrao07不适合我。但是当我们使用Toolbar时,我找到了解决此问题的完美解决方案。

以编程方式隐藏工具栏

if (toolbar.getParent() instanceof AppBarLayout){
                    ((AppBarLayout)toolbar.getParent()).setExpanded(false,true);
                }

以编程方式显示工具栏

if (toolbar.getParent() instanceof AppBarLayout){
                        ((AppBarLayout)toolbar.getParent()).setExpanded(true,true);

参考原始答案(@Android HHT答案): - programmatically-show-toolbar-after-hidden-by-scrolling-android-design-library