web-dev-qa-db-fra.com

Arrêtez le défilement sur CollapsingToolbarLayout pour qu'il ne se replie pas complètement

J'ai une configuration CollapsingToolbarLayout et je place un fond d'écran là-bas. Je veux pouvoir l'empêcher de s'effondrer complètement.

J'ai essayé minheight et bien d'autres choses, mais je ne peux pas le comprendre.

Comment puis-je l'empêcher de s'effondrer sur la deuxième capture d'écran?

Afficher lorsque l'activité est chargée

Loaded View

Point d'arrêt souhaité

Desired Stopping point

Point d'arrêt actuel

Current Stopping Point

19
Bignadad

CollapsingToolbarLayout fonctionne très étroitement avec Toolbar et en tant que tel, la hauteur réduite dépend de la barre d'outils.

J'ai pu résoudre votre problème en utilisant cette mise en page ( Remarque il va dans la configuration normale de CoordinatorLayout/AppBarLayout, Avec Fab et un NestedScrollView ou RecyclerView):

<Android.support.design.widget.CollapsingToolbarLayout
    Android:id="@+id/collapsing_toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true"
    app:layout_scrollFlags="scroll|exitUntilCollapsed"
    app:statusBarScrim="?attr/colorPrimaryDark"
    app:contentScrim="@Android:color/transparent"
    app:titleEnabled="false"
    >
    <!-- There isnt a contentSCrim attribute so the toolbar is transparent after being
         collapsed
         Disabled the title also as you wont be needing it -->

    <ImageView
        Android:id="@+id/image_v"
        Android:layout_width="match_parent"
        Android:layout_height="360dp"
        Android:layout_gravity="center"
        Android:scaleType="centerCrop"
        Android:src="@drawable/md2"
        Android:fitsSystemWindows="true"
        app:layout_collapseMode="parallax"
        tools:ignore="ContentDescription"
        />
        <!-- Normal Imageview. Nothing interesting -->

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="168dp"
        app:layout_collapseMode="pin"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        />
        <!-- The toolbar is styled normally. However we disable the title also in code.
        Toolbar height is the main component that determines the collapsed height -->

    <TextView
        Android:text="@string/app_name"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom"
        Android:background="?attr/colorPrimaryDark"
        Android:paddingLeft="72dp"
        Android:paddingRight="0dp"
        Android:paddingBottom="24dp"
        Android:paddingTop="24dp"
        Android:textColor="@Android:color/white"
        Android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        />
        <!-- The title textView -->

</Android.support.design.widget.CollapsingToolbarLayout>

L'activité associée ressemble à ceci:

    ...
    setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // Disable toolbar title
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    ...

Voici une vidéo de l'interaction

enter image description here

13
efemoney

J'ai rencontré le même problème.

Tout d'abord, je viens de définir la hauteur de la barre d'outils comme décrit dans les réponses précédentes et cela fonctionne.

Mais cela a conduit à un autre problème. La vue de la barre d'outils contient des événements tactiles, donc ma vue réduite (qui est MapView) ne prend aucun événement tactile dans sa partie chevauchée par la barre d'outils.

Enfin, ma solution consiste à supprimer la barre d'outils de CollapsingToolbarLayout. Dans mon cas, c'est OK car je ne l'ai utilisé que pour limiter l'effondrement. Et pour définir la hauteur minimale de repli dans onCreateView comme ceci:

CollapsingToolbarLayout layoutCollapsing = (CollapsingToolbarLayout) rootView.findViewById(R.id.layoutCollapsing);
layoutCollapsing.setMinimumHeight(120);
11
CI Apps

Ajoutez simplement la hauteur d'arrêt souhaitée à votre barre d'outils et définissez app:contentScrim="#00000000" pour votre CollapsingToolbarLayout.

  <Android.support.design.widget.CollapsingToolbarLayout
        Android:id="@+id/collapsing_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:contentScrim="#00000000"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <ImageView
            Android:id="@+id/ImageView"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:src="@drawable/image"
            app:layout_collapseMode="parallax"/>

        <Android.support.v7.widget.Toolbar
            Android:layout_width="match_parent"
            Android:layout_height="100dp"
        /> <!-- set desired stop-height as height -->

    </Android.support.design.widget.CollapsingToolbarLayout>
1
Ciron