私はここで厄介な状況に直面しており、この問題を解決する方法がわかりません。
私のプロジェクトにはカスタムBottomSheetDialogFragment
があり、レイアウトにはFrameLayout
を追加または置換するFragment
があります。
Fragment
があり、内部にRecyclerView
があり、height:="wrap_content"
は、BottomSheetDialogFragment
に必要なスペースのみを使用するためです。すべてが素晴らしく見えます。同じレイアウト内に別のビューを配置し、そのビューのRecyclerView
ベローズ以上に設定すると、問題が発生します。RecyclerView
は、他のビューのサイズを無視し、常に最大画面サイズまで拡大します。その後、いくつかの要素が表示され、スクロールすることさえできなくなります。
ソリューション を見ました。一部の開発者は、ビューの高さに等しいpaddingBottom
を追加することを提案しています。しかし、動的なソリューションが必要なため、私の場合は機能しません。
上記で、問題のいくつかの画像と GitHubリポジトリ をサンプルで共有します。
これを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>
説明LinearLayoutを使用すると、重量を扱うことができます。垂直方向では、アイテムを下に配置できます。 recyclerviewの重量は、画面がいっぱいになるまで必要に応じて高さを増やします。追加する次のアイテムはrecyclerviewに追加されますが、リストをスクロールして表示する必要があります
私はあなたのプロジェクトをダウンロードし、この方法で問題を解決しようとします:
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>
私はそれがあなたを助けることを願っています..!