androidandroid-layoutandroid-fragmentsmaterial-designandroid-support-design

Changing Toolbar and CollapsingToolbarLayout scroll flags programmatically


I have a single Activity android app with lots of fragments. When I'm showing a list screen I want to use the Toolbar with the, app:layout_scrollFlags="scroll|enterAlways" property. And in the detail fragments I want to use the CollapsingToolbarLayout with an image in it. Since it's a single Activity app, I have only one Toolbar. Is it possible to modify my layout programmatically to suit both cases?


Solution

  • Yes. Let's say you are going from the CollapsingToolbarLayout fragment to the Toolbar one.

    1. You collapse your AppBarLayout using AppBarLayout.setExpanded(false);

    2. You change the scroll flags to fit your needs.

      AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
      p.setScrollFlags(...);
      toolbar.setLayoutParams(p);
      

      Same goes for the CollapsingToolbarLayout if necessary. I guess it should be something like:

      collapsingToolbarParams.setScrollFlags(0); //no flags for ctl
      toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar