web-dev-qa-db-fra.com

CollapsingToolBarLayout - La couleur du canevas de la barre d'état ne change pas

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:

 initial state:


commencé le défilement:

 started scrolling


fait défiler jusqu'à la réduction:

 scrolled until collapsing


Donc les questions sont:

  1. 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).

  2. 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:

 added colour/style to the toolbar in the xml


  1. Existe-t-il un moyen de placer la barre d’outils au-dessus de l’image au début et de la réduire? (Vous avez peut-être pensé à garder la barre d’outils bien épinglée et la mise en page avant l’image, mais elle va quand même s’effondrer dans la zone de la barre d’état qui est la question principale.)

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");
18
Roee
app:statusBarScrim="@Android:color/transparent"
27
wklbeta

Essayez d’ajouter Android:fitsSystemWindows="true" à AppBarLayout. Cela a fonctionné pour moi.

5
Vineet Ashtekar

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" />
1
Allan Ramírez

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.

1
kingston