scrolling coordinatorlayout collapsing appbarlayout android android-toolbar android-6.0-marshmallow android-collapsingtoolbarlayout

android - coordinatorlayout - CollapsingToolBarLayout: el color de la barra de estado no cambia.



toolbar material design android (4)

Actualicé mi estudio de Android hace unos días y comencé a trabajar con el CoordinatorLayout y CollapsingToolbarLayout solo probando cosas.

Parece que el color de la barra de herramientas anula el color inicial de la barra de estado y el color de la barra de estado (se intentó tanto desde xml como desde el código)

estado inicial:

comenzó a desplazarse:

desplazado hasta colapsar:

Así que las preguntas son:

  1. ¿Cómo puedo evitar que la barra de herramientas anule la barra de estado al colapsar (ni siquiera dejar que la imagen que estoy colapsando esté por encima de ella)?

  2. ¿Cómo puedo cambiar el color de la barra de estado después de colapsar?

Otro problema que tuve es que le di un color inicial a la barra de herramientas y no solo a un color liso porque quería que la barra de herramientas estuviera encima de la imagen, sino que se colocará encima de la imagen y cubrirá parte de ella, además de cubrir todo lo que vaya a colapso detrás de ella

agregado color / estilo a la barra de herramientas en el xml:

  1. ¿Hay alguna forma de colocar la barra de herramientas sobre la imagen desde el principio y simplemente colapsarla? (Pensé en mantener tal vez la barra de herramientas fija y el diseño del marco antes de la imagen, pero aún así se colapsará en el área de la barra de estado, que es la pregunta principal).

Actividad principal 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");


Intente agregar android:fitsSystemWindows="true" a AppBarLayout. Funciono para mi


Para el punto 3: en la barra de herramientas, agregue un fondo transparente

android: background = "@ android: color / transparente"

<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" />


para 2) hay un problema conocido

por ahora estoy configurando el color del fondo de la barra de herramientas programáticamente

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

Esto es, por supuesto, una implementación simple. Puedes optimizarlo.


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