web-dev-qa-db-ja.com

FloatingActionButtonを使用したRecyclerView

RecyclerView(オプションでCardViewにある)とFloatingActionButtonがあるアクティビティがあります

FABを常に画面の右下に表示したいのですが、RecyclerViewの最後までスクロールすると、FABが最後のアイテムのコンテンツの一部を非表示にしています。

CardView(またはRecyclerViewを削除した後のCardView自体)でAndroid:layout_marginBottom="48dp"を使用すると、この問題は修正されますが、RecyclerViewが画面サイズから48dpマージンを引いたサイズに縮小します。

RecyclerViewをフルサイズにしたい(つまり、すべてのアイテムにフィットする)が、最後のアイテムに到達するまでアイテムをスクロールすると、FABが最後のアイテムをカバーしないように、マージンが必要です。 RecyclerView。これは、Google Inbox/Gmailアプリのメーリングリストの動作に似ています。

私は同様の(しかし同じではない)問題のある多くの質問を見てきましたが、解決策はどれも私にとってうまくいきませんでした。この問題には簡単な修正があるはずですが、LinearLayoutManagerを拡張したくありません。この問題には多すぎるようです。また、スクロール時にFABを非表示にしたくない。

ここに私がこれまでに持っているものがあります:

activity_main.xml

<Android.support.design.widget.CoordinatorLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/colorBackground"
    Android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </Android.support.design.widget.AppBarLayout>

    <include layout="@layout/card_list"/>

    <Android.support.design.widget.FloatingActionButton
        Android:id="@+id/fab_add"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom|end"
        Android:layout_margin="@dimen/fab_margin"
        Android:onClick="onClick"
        app:srcCompat="@drawable/ic_add"/>
</Android.support.design.widget.CoordinatorLayout>

card_list.xml

<Android.support.v7.widget.CardView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_marginTop="@dimen/activity_vertical_margin"
    Android:background="@Android:color/white"
    Android:layout_marginBottom="48dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main">

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/list"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>

</Android.support.v7.widget.CardView>
11
A.A.

CardViewからlayout_marginBottomを削除し、RecyclerViewに以下を追加します。

Android:paddingBottom="48dp"
Android:clipToPadding="false"
17
mVck