web-dev-qa-db-ja.com

BottomSheetDialogFragment内のRecyclerView(wrap_content)

私はここで厄介な状況に直面しており、この問題を解決する方法がわかりません。
私のプロジェクトにはカスタムBottomSheetDialogFragmentがあり、レイアウトにはFrameLayoutを追加または置換するFragmentがあります。

Fragmentがあり、内部にRecyclerViewがあり、height:="wrap_content"は、BottomSheetDialogFragmentに必要なスペースのみを使用するためです。すべてが素晴らしく見えます。同じレイアウト内に別のビューを配置し、そのビューのRecyclerViewベローズ以上に設定すると、問題が発生します。
RecyclerViewは、他のビューのサイズを無視し、常に最大画面サイズまで拡大します。その後、いくつかの要素が表示され、スクロールすることさえできなくなります。

ソリューション を見ました。一部の開発者は、ビューの高さに等しいpaddingBottomを追加することを提案しています。しかし、動的なソリューションが必要なため、私の場合は機能しません。

上記で、問題のいくつかの画像と GitHubリポジトリ をサンプルで共有します。

enter image description hereenter image description here ご清聴ありがとうございました!

13
extmkv

これを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に追加されますが、リストをスクロールして表示する必要があります

6
sebasira

私はあなたのプロジェクトをダウンロードし、この方法で問題を解決しようとします:

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>

私はそれがあなたを助けることを願っています..!

0
Viral Patel