Hide/Show Toolbar programmatically on CoordinatorLayout

前端 未结 3 1952
盖世英雄少女心
盖世英雄少女心 2020-12-23 13:24

When I scroll my RecycleView ToolBar hide or show (with animation).

How I can return ToolBar back programmatically?

相关标签:
3条回答
  • 2020-12-23 14:11

    Is that what you looking for?

    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

    In order to hide the Toolbar your can just do something like this:

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

    If you want to show it again you call:

    toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
    
    0 讨论(0)
  • 2020-12-23 14:13

    If your toolbar is inside an AppBarLayout which is probably inside your CoordinatorLayout then something like this should work.

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

    Or to collapse it

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

    Here is the definition

    setExpanded(boolean expanded, boolean animate)
    

    Take note that this method is available from v23 of the support library, here is some documentation for reference, the key thing to note is "As with AppBarLayout's scrolling, this method relies on this layout being a direct child of a CoordinatorLayout." Hope this helps!

    0 讨论(0)
  • 2020-12-23 14:21

    My problem was very similar to @Artem I tried many fix but none of them worked for me. @Jraco11's answer is correct when you use AppBarLayout. @johnrao07 not worked for me. But I found a perfect solution for this problem when we use Toolbar.

    To hide Toolbar programatically

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

    To show Toolbar programatically

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

    Refer original answer(answer by @Android HHT):- programmatically-show-toolbar-after-hidden-by-scrolling-android-design-library

    0 讨论(0)
提交回复
热议问题