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>
CardViewからlayout_marginBottomを削除し、RecyclerViewに以下を追加します。
Android:paddingBottom="48dp"
Android:clipToPadding="false"