Je suis confronté à une situation délicate et je ne sais pas comment résoudre ce problème.
Dans mon projet, j'ai une BottomSheetDialogFragment
personnalisée et dans la mise en page une FrameLayout
pour ajouter ou remplacer Fragment
s.
Maintenant, j'ai une Fragment
et à l'intérieur, j'ai une RecyclerView
avec le height:="wrap_content"
parce que je veux que la BottomSheetDialogFragment
utilise uniquement l'espace nécessaire. Tout a l'air génial, le problème apparaît lorsque je mets une autre vue à l'intérieur de la même présentation et que je règle le RecyclerView
ci-dessous ou au-dessus de cette vue.
La RecyclerView
ignore la taille de la ou des autres vues et augmente toujours jusqu'à la taille maximale de l'écran. Il est alors impossible de voir quelques éléments et même de faire défiler.
J'ai vu un solution , certains développeurs suggèrent d'ajouter paddingBottom
égal à la hauteur de la vue. Mais dans mon cas, cela ne fonctionne pas parce que je veux une solution dynamique.
Ci-dessus, je partagerai quelques images du problème et GitHub Repository avec un exemple.
J'ai réussi à faire ce dont vous avez besoin, il vous suffit de l'utiliser comme fragment_sample.xml :
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/rclItems"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1"
app:layoutManager="Android.support.v7.widget.LinearLayoutManager"/>
<Button
Android:id="@+id/btnAddMoreItems"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/rclItems"
Android:text="@string/add_1_item"/>
</LinearLayout>
Explication L’utilisation de LinearLayout vous donne la possibilité de travailler avec le poids et l’orientation verticale vous permet de placer un élément sous l’autre. Le poids sur la vue de recyclage augmentera sa hauteur si nécessaire jusqu’à remplir l’écran. L'élément suivant que vous ajoutez sera ajouté à la vue de recyclage, mais vous devrez faire défiler la liste pour le voir.
Je télécharge votre projet et j'essaie de résoudre le problème de cette manière:
fragment_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView>
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/rclItems"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:layoutManager="Android.support.v7.widget.LinearLayoutManager"/>
<Button
Android:id="@+id/btnAddMoreItems"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/rclItems"
Android:text="@string/add_1_item"/>
</RelativeLayout>
</ScrollView>
J'espère que ça vous aidera ..!