CollapsingToolBarLayout – изменение строки состояния в строке состояния

Несколько дней назад я обновил свою андроид-студию и начал работать с CoordinatorLayout и CollapsingToolbarLayout, просто попробовав материал.

Кажется, что цвет синтаксиса панели инструментов переопределяет начальный цвет строки состояния и цвет синтаксиса строки состояния (испробованный как из xml, так и из кода)

начальное состояние:

начальное состояние:


Начал прокрутку:

Начал прокрутку


Прокручивается до развала:

Прокручивается до обрушения


Поэтому вопросы:

1. Как я могу помешать панели инструментов переопределить строку состояния при свертывании (даже не позволяя изображению, которое я рушится, чтобы выходить за него).

2.Как изменить цвет строки состояния после свертывания

Еще одна проблема, с которой я столкнулся, заключается в том, что я дал начальный цвет панели инструментов, а не только цвет холста, потому что мне нужна панель инструментов над изображением, но вместо этого она будет отображаться поверх изображения и будет охватывать некоторые из них, а также будет охватывать все, что собирается Свернуть за ним


Добавлен цвет / стиль на панель инструментов в xml:

Добавлен цвет / стиль на панель инструментов в xml


3.Есть ли способ поставить панель над изображением с самого начала и просто свернуть изображение? (Подумал о том, что, возможно, удерживает панель инструментов и расположение рамки перед изображением, но она все равно рухнет в области строки состояния, которая является основным вопросом.)


Основная деятельность xml:

<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim = "?attr/colorPrimary" app:statusBarScrim="?attr/colorAccent" --------> not changing android:id="@+id/my_ctl"> <ImageView android:id="@+id/image" android:src="@drawable/flights" android:layout_width="match_parent" android:layout_height="250dp" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <include layout="@layout/content_main" /> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> </android.support.design.widget.CoordinatorLayout> 

MainActivity.java:

  CollapsingToolbarLayout ctl = (CollapsingToolbarLayout) findViewById(R.id.my_ctl); //ctl.setContentScrimColor(Color.RED); ctl.setStatusBarScrimColor(Color.BLUE); --------> not working ctl.setTitle("blabla"); 

 app:statusBarScrim="@android:color/transparent" 

Попробуйте добавить android:fitsSystemWindows="true" в AppBarLayout. Это сработало для меня.

Для пункта № 3: на панели инструментов добавьте прозрачный фон

Android: фон = "@ андроид: цвет / прозрачный"

  <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_collapseMode="pin" android:background="@android:color/transparent" /> 

Для 2) существует известная проблема

Пока я устанавливаю цвет фона панели инструментов программно

  mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { Toolbar toolbar = (Toolbar) mAppBarLayout.findViewById(R.id.toolbar_top); int toolbarBackground = (state == AppBarStateChangeListener.State.COLLAPSED) ? R.color.color_collapsed : R.color.color_non_collapsed; toolbar.setBackgroundColor(ContextCompat.getColor(DealsOptionsActivity.this, toolbarBackground)); } }); 

Это, конечно, простая реализация. Вы можете его оптимизировать.