CollapsingToolBarLayout – barra de estado

He actualizado mi androide estudio hace unos días y comenzó a trabajar con el CoordinatorLayout y CollapsingToolbarLayout sólo probar cosas.

Parece que el color de la barra de herramientas sobreescribe el color inicial de la barra de estado y el color de la barra de estado de la barra (intentado tanto de xml como de código)

estado inicial:

estado inicial:


Comenzó a desplazarse:

Comenzó a desplazarse


Desplazado hasta el colapso:

Desplazado hasta el colapso


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 para ir por encima de ella).

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

Otra cuestión que tuve es que le di el color inicial de la barra de herramientas y no sólo el color del scrim porque quería la barra de herramientas por encima de la imagen, sino que va a ir en la parte superior de la imagen y cubrirá parte de ella, así como cubrirá cualquier cosa que va a Colapsar detrás de él


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

Agregó color / estilo a la barra de herramientas en el xml


3.¿Hay alguna manera de poner la barra de herramientas por encima de la imagen desde el principio y sólo colapsar la imagen? (Pensado en tal vez mantener la barra de herramientas fijada y el diseño del marco antes de la imagen, pero su todavía va a 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"); 

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

Prueba a agregar android:fitsSystemWindows="true" a AppBarLayout. Funcionó para mí.

Para el punto # 3: En la barra de herramientas añadir un fondo transparente

Android: background = "@ android: color / transparent"

  <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 fijando el color del fondo de la barra de herramientas programmatically

  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 simple implementación. Puede optimizarlo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.