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:
¿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)?
¿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:
- ¿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"