setTitle(title); params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL + AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED + AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); } else if (!scrollingEnabled && showImage && collapsingImage != null) { toolbar.setTitleEnabled(true); toolbar.setTitle(title); params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED + AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL); } else { toolbar.setTitleEnabled(false); setTitle(title); params.setScrollFlags(0);
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (mCustomContentViewId != 0) setContentView(mCustomContentViewId); else setContentView(R.layout.activity_setup_big_header); AppBarLayout appBar = findViewById(R.id.appbar); CollapsingToolbarLayout toolbarLayout = findViewById(R.id.toolbar_layout); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); mLayout = findViewById(R.id.layout); mLayout.getViewTreeObserver().addOnGlobalLayoutListener(() -> { int height = mLayout.getHeight(); CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBar.getLayoutParams(); params.height = height / 3; appBar.setLayoutParams(params); int childHeight = (mContentView != null ? mContentView.getHeight() : 0); if (mContentView instanceof NestedScrollView) childHeight = ((NestedScrollView) mContentView).getChildAt(0).getHeight(); boolean needsScroll = (mContentView != null && childHeight > height - params.height); AppBarLayout.LayoutParams paramsToolbar = (AppBarLayout.LayoutParams) toolbarLayout.getLayoutParams(); paramsToolbar.setScrollFlags(needsScroll ? (AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED) : 0); toolbarLayout.setLayoutParams(paramsToolbar); }); }
/** * Set layout scroll flags for the toolbar. * <p>Useful to change the collapse mode dynamically. * * @param flags The scroll flags for the collapsing toolbar layout. */ public void setToolbarLayoutFlags(@AppBarLayout.LayoutParams.ScrollFlags int flags) { if (mToolbar != null) { AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams(); params.setScrollFlags(flags); mToolbar.setLayoutParams(params); } }
/** * Set layout scroll flags for the collapsing toolbar layout. * <p>Useful to change the collapse mode dynamically. * * @param flags The scroll flags for the collapsing toolbar layout. */ public void setCollapsingToolbarLayoutFlags(@AppBarLayout.LayoutParams.ScrollFlags int flags) { if (mCollapsingToolbarLayout != null) { AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mCollapsingToolbarLayout.getLayoutParams(); params.setScrollFlags(flags); mCollapsingToolbarLayout.setLayoutParams(params); } }
@BindingAdapter("toolbarScrollFlags") public static void toolbarScrollFlags(Toolbar toolbar, boolean hasTabs) { AppBarLayout.LayoutParams params = ((AppBarLayout.LayoutParams) toolbar.getLayoutParams()); params.setScrollFlags(hasTabs ? AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS : 0); }
protected void setScrollToolbar(boolean scrollToolbar) { if (toolbar != null) { AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); if (scrollToolbar) { params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); } else { params.setScrollFlags(0); } } }