You should use padding instead of margin. To do this, edit WhatsuppHeaderBehavior.java as follows:
private int mStartPaddingLeft; private int mEndPaddingLeft; private int mPaddingRight; private int mStartPaddingBottom; @Override public boolean onDependentViewChanged(CoordinatorLayout parent, HeaderView child, View dependency) { shouldInitProperties(); int maxScroll = ((AppBarLayout) dependency).getTotalScrollRange(); float percentage = Math.abs(dependency.getY()) / (float) maxScroll; float childPosition = dependency.getHeight() + dependency.getY() - child.getHeight() - (getToolbarHeight(mContext) - child.getHeight()) * percentage / 2; if (Math.abs(dependency.getY()) >= maxScroll / 2) { float layoutPercentage = (Math.abs(dependency.getY()) - (maxScroll / 2)) / Math.abs(maxScroll / 2); child.setPaddingRelative((int)(layoutPercentage * mEndPaddingLeft) + mStartPaddingLeft,0,0,0); } child.setY(childPosition); if (isHide && percentage < 1) { child.setVisibility(View.VISIBLE); isHide = false; } else if (!isHide && percentage == 1) { child.setVisibility(View.GONE); isHide = true; } return true; } private void shouldInitProperties() { if (mStartPaddingLeft == 0) { mStartPaddingLeft = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_start_margin_left); } if (mEndPaddingLeft == 0) { mEndPaddingLeft = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_left); } if (mStartPaddingBottom == 0) { mStartPaddingBottom = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_start_margin_bottom); } if (mPaddingRight == 0) { mPaddingRight = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_right); } if (mTitleStartSize == 0) { mTitleEndSize = mContext.getResources().getDimensionPixelSize(R.dimen.header_view_end_text_size); } if (mTitleStartSize == 0) { mTitleStartSize = mContext.getResources().getDimensionPixelSize(R.dimen.header_view_start_text_size); } }
Also use the setBackground method for the toolbar in MainActivity
@Override public void onOffsetChanged(AppBarLayout appBarLayout, int offset) { int maxScroll = appBarLayout.getTotalScrollRange(); float percentage = (float) Math.abs(offset) / (float) maxScroll; if (percentage == 1f && isHideToolbarView) { toolbarHeaderView.setVisibility(View.VISIBLE); toolbar.setBackgroundColor(yourColor); isHideToolbarView = !isHideToolbarView; } else if (percentage < 1f && !isHideToolbarView) { toolbarHeaderView.setVisibility(View.GONE); toolbar.setBackgroundColor(yourColor); isHideToolbarView = !isHideToolbarView; } }
source share