À l'aide de windowTranslucentStatus avec CollapsingToolbarLayout

Je vais essayer d'obtenir un effet similaire à ce qui est vu sur google play.

J'ai eu la mise en page ci-dessous pour afficher une transparence de la barre d'outils avec une image derrière elle. Lorsque l'utilisateur fait défiler il y a un effet de parallaxe sur l'imageview comme il sort de l'écran. La barre d'outils retourne quand l'utilisateur fait défiler vers le haut, avec l'imageview renvoyant uniquement lorsque l'utilisateur arrive à la lop de la liste.

Tout cela fonctionne très bien.

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="@color/background_material_dark">
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbarLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:minHeight="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
            app:statusBarScrim="#09b"
            app:contentScrim="#09f">
            <ImageView
                android:id="@+id/img"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/location_banner"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7"
                />
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"
                android:fitsSystemWindows="true"
                app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

</android.support.design.widget.CoordinatorLayout>

La question

Lorsque j'ai mis windowTranslucentStatus de vrai.
Le contenu de la vue se déplacer jusqu'à être sous la barre d'état, mais le contenu de la CollapsingToolbarLayout se déplace jusqu'à deux fois la hauteur de la barre d'état(CollapsingToolbarLayout conserve la bonne hauteur).

Cela signifie que certains des meilleurs de l'image est coupée, et l'actionbar apparaît maintenant dans la barre d'état plutôt qu'au-dessous. Comme un effet secondaire de cela, il est maintenant de remplissage au bas de la CollapsingToolbarLayout la même hauteur que la barre d'état

C'est à quoi il ressemble sans windowTranslucentStatus. Ici, tout fonctionne très bien
À l'aide de windowTranslucentStatus avec CollapsingToolbarLayout

windowTranslucentStatus définie sur true
À l'aide de windowTranslucentStatus avec CollapsingToolbarLayout

De l'utilisateur de faire défiler vers le haut du bas dans la liste (pas au top)
À l'aide de windowTranslucentStatus avec CollapsingToolbarLayout

  • comment avez-vous résolu ce problème. Malheureusement, j'obtiens cette erreur, pouvez-vous s'il vous plaît partagez-moi votre solution?
  • Google briser ce à chaque fois qu'ils font une nouvelle version de la bibliothèque de prise en charge, mais vous pouvez trouver un autre hack chaque fois pour obtenir autour de lui (très frustrant). 23.1.1 est un bon pari pour avoir de travail sur ok. Plus de détails dans la deuxième dernier post ici code.google.com/p/android/issues/...
  • oui, plus tôt(avec de vieux outils de construction), il a été fonctionne bien si je continue à fitsSystemWindows=true. Cependant, il a cassé dans la dernière version des outils. Après avoir lutté beaucoup, j'ai enlevé thefitsSystemWindows de racine mise en page et maintenant Il fonctionne comme prévu. Merci pour la réponse 🙂
  • J'ai remarqué qu'un certain paddingTop a été ajoutée à ma RecyclerView lors de l'utilisation de fitSystemWindow. Finalement, j'ai mis en place un hack qui réinitialise le paddingTop à zéro manuellement personnalisé dans un recycleur. Maintenant, il fonctionne très bien. Pas la meilleure solution mais au moins ça fonctionne pour l'instant...
InformationsquelleAutor Stimsoni | 2015-06-17