Как установить фон сворачиваемой панели инструментов с пользовательским поведением, чтобы он соответствовал всему экрану

Я следую за хорошим репо, которое показывает, как создать пользовательское поведение сворачивающейся панели инструментов WhatsApp-ProfileCollapsingToolbar .

Мне не нравится, когда изображение под панелью инструментов (шрифт панели инструментов белый) белый, а панель инструментов не видна. Поэтому я пытаюсь установить фон панели инструментов для какого-то цвета.

Сначала я добавил в widget_header_view.xml android:background="@android:color/holo_red_light" и теперь у меня это похоже:

 <?xml version="1.0" encoding="utf-8"?> <com.anton46.whatsapp_profile.HeaderView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/holo_red_light" android:orientation="vertical"> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/activity_horizontal_margin" android:ellipsize="end" android:maxLines="1" android:textColor="@android:color/white" android:textSize="@dimen/header_view_start_text_size" android:textStyle="bold" /> <TextView android:id="@+id/last_seen" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:textColor="@android:color/white" /> </com.anton46.whatsapp_profile.HeaderView> 

И в activity_main.xml я изменил app:contentScrim="?attr/colorPrimary" в app:contentScrim="@android:color/holo_red_light"

Но поскольку это репо использует поля в эффекте WhatsappHeaderBehavior, это похоже на:

Введите описание изображения здесь

Но я хотел бы, чтобы это было так:

Введите описание изображения здесь

EDIT 1:

Решение с paddings, предложенное https://stackoverflow.com/users/3436179/alexander в https://stackoverflow.com/a/37280227/2401535 , не помогает, потому что тогда «плавающая» панель инструментов закрывает кнопку возврата, как здесь: Панель инструментов закрывается

Вы должны использовать отступы вместо поля. Для этого отредактируйте WhatsuppHeaderBehavior.java следующим образом:

 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); } } 

Также используйте метод setBackground для панели инструментов в 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; } } 

Если вы не спешите в крайний срок, скорее используйте стандартную ручную панель инструментов Google.

http://antonioleiva.com/collapsing-toolbar-layout/