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?
5 Réponses :
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>
cette approche coupera la vue au-dessus de l'article, il a besoin du rouleau de recyclage derrière lui.
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
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.
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.
La propriété layout_above prendra l'identifiant de YourAnotherView comme valeur, veuillez noter.
J'ai la réponse. besoin de définir ceci dans recyclerview
android:clipToPadding="false" android:paddingBottom="the bottom padding needed"
C'est encore mieux que les nuls. Merci.
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
}
partagez votre code xml