J'ai mis à jour mon studio Android il y a quelques jours et j'ai commencé à travailler avec CoordinatorLayout et CollapsingToolbarLayout, tout en essayant.
Il semble que la couleur du canevas de la barre d’outillage remplace la couleur initiale de la barre d’état et la couleur du canevas de la barre d’état (à la fois avec xml et le code)
etat initial:
commencé le défilement:
fait défiler jusqu'à la réduction:
Donc les questions sont:
Comment empêcher la barre d'outils de remplacer la barre d'état lors de la réduction (même en ne laissant pas l'image que je réduis passer au-dessus de celle-ci).
Comment puis-je changer la couleur de la barre d'état après la réduction
Un autre problème que j’avais, c’est que j’ai donné la couleur initiale à la barre d’outils et pas seulement la couleur du canevas parce que je voulais la barre d’outils au-dessus de la photo, s'effondrer derrière elle
ajout de couleur/style à la barre d’outils au format xml:
activité principale 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"
Essayez d’ajouter Android:fitsSystemWindows="true"
à AppBarLayout. Cela a fonctionné pour moi.
Pour le point n ° 3: dans la barre d’outils, ajoutez un fond transparent
Android: background = "@ Android: couleur/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" />
pour 2) il y a un problème connu
pour l'instant je règle la couleur de l'arrière-plan de la barre d'outils par programmation
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));
}
});
il s’agit bien entendu d’une simple implémentation. Vous pouvez l'optimiser.