Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FloatingActionButton default margin not working in lollipop

I am displaying FloatingActionButton along with a Recyclerview in a CoordinatorLayout, when the FAB is clicked a row would be added in Recyclerview. Now the problem is the FAB has margin when i tested in API 15 but when I test in API 22(lollipop 5.1.1-Nexus 4) I do not get any margin and the FAB is pressed to the edge of the screen.

My concern is FAB has default margin setup in API 15(didnt test other devices) but not in API 22 or am I missing something.

My layout code:

<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>

enter image description here

like image 984
Psypher Avatar asked Jun 15 '15 07:06

Psypher


2 Answers

I ended up using API-specific margin values. My action button is like this:

    <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 is defined in both values/dimens.xml:

<dimen name="action_button_margin">0dp</dimen>

And in values-v21/dimens.xml:

<dimen name="action_button_margin">16dp</dimen>
like image 45
Daniele Ricci Avatar answered Nov 06 '22 07:11

Daniele Ricci


Just use:

app:useCompatPadding="true"

This should add required space.

like image 186
Dawid Hyży Avatar answered Nov 06 '22 09:11

Dawid Hyży