4
votes

Comment faire défiler la vue du recycleur au-delà de la hauteur des éléments

J'ai une vue recycleur à partir du haut de l'écran vers le bas de l'écran. Au bas de l'écran, il y a une autre vue qui masque le dernier élément de la vue du recycleur.

Je veux que la vue du recycleur défile un peu plus, jusqu'en haut de l'élément du bas. Ainsi, le dernier élément pourrait être visible.

Je sais, comme je peux ajouter un élément vide factice à la fin de la liste en vue recycleur. Mais je ne veux pas perturber le nombre d'articles dans la vue du recycleur. Dois-je redimensionner la hauteur du dernier élément de la vue de l'outil de recyclage afin que son contenu vienne au-dessus de l'élément du bas?

Tout le monde a une meilleure idée. quelle est la meilleure façon de le faire?


1 commentaires

partagez votre code xml


5 Réponses :


0
votes

Ne définissez pas la hauteur de la vue du recycleur sur match_parent . Utilisez la disposition relative et modifiez les propriétés de la vie de recycleur par rapport à la vue (que vous souhaitez ajouter en bas de l'écran). par exemple. Layout_above

OU Vous pouvez simplement utiliser ScrollView pour faire défiler la vue entière.

<ScrollView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fillViewport="true"
    xmlns:android="http://schemas.android.com/apk/res/android"
>
<RelativeLayout>
</RelativeLayout>
</ScrollView>


1 commentaires

cette approche coupera la vue au-dessus de l'article, il a besoin du rouleau de recyclage derrière lui.



0
votes

Faites de la vue racine de votre mise en page un ScrollView: Quelque chose comme:

<ScrollView>
   <LinearLayout>
       <RecyclerView/>
       <TheItemsYouWantToSee/>
   </LinearLayout>
</ScrollView>

Vous pouvez avoir différents conteneurs au lieu du LinearLayout: CoordinatorLayout, Constraint ... qui enveloppe les éléments dans la vue déroulante


2 commentaires

scrollview ne peut contenir qu'un seul enfant direct.


Ensuite, placez tous les éléments dans un LinearLayout, et ce linéaire dans le ScrollView.



0
votes

Ajoutez votre vue de recyclage et la vue de dessous que vous souhaitez conserver dans un RelativeLayout comme celui-ci -

<RelativeLayout>
   <RecyclerView/>
   <YourAnotherView/>
</RelativeLayout>

Et, ajoutez la propriété layout_above au RecyclerView. Cette propriété gardera toujours la vue de recyclage au-dessus de votre vue de dessous.


1 commentaires

La propriété layout_above prendra l'identifiant de YourAnotherView comme valeur, veuillez noter.



8
votes

J'ai la réponse. besoin de définir ceci dans recyclerview

android:clipToPadding="false"
android:paddingBottom="the bottom padding needed"


1 commentaires

C'est encore mieux que les nuls. Merci.



0
votes

La vue factice fonctionne très bien. Et plus important encore, c'est moins salissant. Ajoutez simplement en tant que mannequins, vous devez être au-dessus de cette Vue et rendez-les invisibles au début de onBindViewHolder

if(position >= list.size) {
            holder.item.visibility = View.INVISIBLE
            return
        } else
            holder.item.visibility = View.VISIBLE

et avant de remplir les éléments onBindViewHolder

override fun getItemCount(): Int {
        //two more items (invisible) for end of the list
        return  list.size + 2
    }


0 commentaires