/** * 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); } }
@Override public void setupToolbarImage(Bitmap bm) { ImageView collapsingImage = findViewById(R.id.collapsing_image); if (collapsingImage != null) { collapsingImage.setImageBitmap(bm); // FIXME DIRTY HACK: Manually fix the toolbar size to the screen width CollapsingToolbarLayout toolbar = findViewById(R.id.collapsing_toolbar); AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); params.height = getWindow().getDecorView().getMeasuredWidth(); // Always expand the toolbar to show the complete image AppBarLayout appbar = findViewById(R.id.appbar); appbar.setExpanded(true, false); } }
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); params.height = -1;
@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); }); }