Comment ajouter un simple en-tête / pied de page 8dp à RecyclerView d'Android?

133

Existe-t-il un moyen d'ajouter un simple en-tête / pied de page à un RecyclerView?

Ici vous pouvez voir ce que j'ai. La première carte touche la barre d'outils C'est ce que j'ai

Et ici vous pouvez voir ce que je veux. Rembourrage 8dp entre le bas et la carte. C'est ce que je veux avoir

Méthodes que j'ai essayées jusqu'à présent:

  • Utilisez une vue d'en-tête dans ma vue de recyclage. Mais je pense qu'il est très inefficace de faire cela pour chaque vue de recyclage.

  • utilisez une marge supérieure de 8dp, ce qui entraîne le problème que la vue de recyclage a des barres blanches en haut / en bas lors du défilement.

  • ajoutez un remplissage à l'élément de liste qui se traduit par des marges différentes entre les cartes extérieures et intérieures.

  • Je suis sûr qu'il existe une solution simple que je ne connais pas encore.

    Philipp Schumann
    la source

    Réponses:

    403

    L'ajout d'un rembourrage supérieur et le réglage clipToPaddingsur false fera l'affaire.
    Quelque chose comme ça:

      <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:paddingTop="8dp"
        android:clipToPadding="false"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    Florianmski
    la source
    9
    Fonctionne pour le haut, mais pour une raison quelconque, pas pour le bas.
    Benjamin le
    4
    Quelle version de la bibliothèque de support utilisez-vous? La configuration de paddingBottom fonctionne très bien pour moi.
    Estel le
    2
    ne fonctionne pas pour moi non plus sur l'API 23. J'essaye android: paddingBottom = "8dp" android: clipToPadding = "false"
    techtinkerer
    1
    paddingBottom Works for me, recyclerview-v7-25.3.1
    Nino van Hooff
    1
    Cette solution coupe la barre de défilement, cependant. Des solutions à cela?
    Sebastian
    2

    Si vous utilisez un RecyclerView avec un layout_weight, et paddingBottomne fonctionne pas pour vous, assurez-vous de définir layout_height sur 0dp! Sinon, étrangement, paddingTop fonctionne mais paddingBottom ne fonctionne pas:

    <android.support.v7.widget.RecyclerView android:id="@+id/recycler"
        android:paddingBottom="20dp"
        android:clipToPadding="false"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp" /> 
    Greg Ennis
    la source
    Régler la hauteur sur 0dp fait disparaître la vue. Est-ce que j'ai râté quelque chose?
    Sagar
    Supprimez simplement weight = "1" et définissez layout_height sur match_parent
    Mike