web-dev-qa-db-fra.com

Android RecyclerView sous la barre d'outils

J'ai un RecyclerView personnalisé et une barre d'outils qui se cachent lors du défilement vers le bas et apparaissent lors du défilement vers le haut. J'ai un problème avec la position de RecyclerView, c'est en dessous de la barre d'outils, j'utilise le comportement mais ça ne marche pas.

Mon xml:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/coordinatorLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.v7.widget.RecyclerView 
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/recyclerView"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appBarLayout"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways" />

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

    <Android.support.v4.view.ViewPager
        Android:id="@+id/viewPager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</Android.support.design.widget.CoordinatorLayout>
36
user4789408

Essaye ça:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/coordinatorLayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">

<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:id="@+id/appBarLayout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways" />

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

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

J'ai supprimé ViewPager et ajouté un comportement de défilement à RecyclerView

51
Hải Nguyễn

Si l'ajout d'un comportement de défilement ne résout pas votre problème

app:layout_behavior="@string/appbar_scrolling_view_behavior"

ALORS ESSAYEZ CECI

J'ai dû donner un rembourrage à recyclerview qui est équivalent à la hauteur de la barre d'outils/barre d'action (barre d'application).

  Android:paddingTop="?attr/actionBarSize"  

ajoutez la ligne ci-dessus au fichier xml recyclerview

41
war_Hero

Lorsque j'ai inclus RecyclerView à partir d'une autre mise en page, le même problème s'est produit. J'ai ajouté cette ligne suivante sur recyclerview et le problème ne persiste plus.

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

Manquer cette ligne ci-dessus rendra ce problème.

13
Raviraj Subramanian

Vous devez ajouter cet attribut à votre RecyclerView:

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

c'est à dire.:

<Android.support.v7.widget.RecyclerView
        Android:id="@+id/my_recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
4
ramon