web-dev-qa-db-fra.com

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

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

Ici vous pouvez voir ce que j'ai. La première carte touche la barre d'outils This is what I've got

Et ici vous pouvez voir ce que je veux. 8dp Rembourrage entre le bas et la carte. This is what I want to have

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

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

  • utilisez une marge supérieure de 8dp, ce qui pose le problème suivant: des vues de la vue recyclée comportent des barres blanches en haut/en bas lors du défilement.

  • ajoutez un élément de remplissage à l'élément de la liste, ce qui entraîne des marges différentes entre les cartes externe et interne.

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

    115
    Philipp Schumann

    Ajouter un remplissage supérieur et définir clipToPadding sur 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" />
    
    360
    florianmski

    Si vous utilisez un RecyclerView avec un layout_weight, et paddingBottom ne fonctionne pas pour vous, assurez-vous de régler le paramètre layout_height sur 0dp! Sinon, étrangement, paddingTop fonctionne, mais paddingBottom ne le fait 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" /> 
    
    2
    Greg Ennis