FloatingActionButton
とともにRecyclerview
をCoordinatorLayout
に表示しています。FABをクリックすると、Recyclerview
に行が追加されます。今問題は、API 15でテストしたときにFABにマージンがあることですが、API 22(Lollipop 5.1.1-Nexus 4)でテストすると、マージンが得られず、FABが画面の端まで押されます。
私の懸念は、FABがAPI 15(他のデバイスをテストしなかった)にデフォルトのマージン設定を持っているが、API 22にはないか、何か不足していますか?.
私のレイアウトコード:
<Android.support.design.widget.CoordinatorLayout 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="match_parent"
Android:background="#6fbababa"
Android:fitsSystemWindows="true">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/my_recycler_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:clipToPadding="false"
Android:paddingBottom="@dimen/fab_padding_bottom"
Android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="#ffffff">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:fitsSystemWindows="true"
Android:orientation="horizontal"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed">
---------------------
---------------------
</LinearLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/button_floating_action"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:clickable="true"
Android:src="@drawable/ic_plus"
app:borderWidth="0dp"
app:layout_anchor="@id/my_recycler_view"
app:layout_anchorGravity="bottom|right|end"
app:rippleColor="@color/wallet_highlighted_text_holo_light" />
</Android.support.design.widget.CoordinatorLayout>
ただ使用する:
app:useCompatPadding="true"
これにより、必要なスペースが追加されます。
API固有のマージン値を使用してしまいました。私のアクションボタンは次のようなものです。
<Android.support.design.widget.FloatingActionButton
Android:contentDescription="@string/menu_compose"
Android:id="@+id/action"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:clickable="true"
Android:src="@drawable/ic_create_white"
Android:layout_gravity="bottom|right|end"
Android:layout_marginBottom="@dimen/action_button_margin"
Android:layout_marginRight="@dimen/action_button_margin"
Android:layout_marginEnd="@dimen/action_button_margin"
app:elevation="6dp"
app:pressedTranslationZ="12dp"
app:fabSize="normal"/>
@dimen/action_button_margin
は、values/dimens.xmlの両方で定義されています。
<dimen name="action_button_margin">0dp</dimen>
そして、values-v21/dimens.xmlで:
<dimen name="action_button_margin">16dp</dimen>
この質問 で説明されているのと同じ問題があると思います。マージンが異なるのは、APIバージョンに応じて影が計算されるかどうかに起因します。