Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FAB with anchor in coordinator layout has extra margin in android pre-lollipop

I have a CoordinatroLayoutwith FloatingActionButton. Here is my 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:layout_below="@+id/toolbar_layout"
        android:layout_above="@+id/actionbar">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="120dp"
                android:minHeight="?android:attr/actionBarSize"
                android:background="@color/toolbar_color" />


            <ScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                >

            </ScrollView>


        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:clickable="true"
            app:fabSize="mini"
            android:src="@mipmap/ic_action_edit"
            app:layout_anchor="@id/toolbar"
            app:layout_anchorGravity="bottom|right|end"
            app:backgroundTint="@color/toolbar_color"            />
        </android.support.design.widget.CoordinatorLayout>

But it appears differently in lollipop and pre-lollipop devices.

Lollipop:

enter image description here

Pre-Lollipop: enter image description here

Actually I haven't add any margin. But FAB has margin in pre-lollipop devices.

I have also seen this problem in cheessesquare sample. It shows different margins too. What is the problem?

like image 608
Misagh Emamverdi Avatar asked Sep 23 '15 15:09

Misagh Emamverdi


2 Answers

I dont think you want to place them without margins. If I understood it right, you've done this to see whats going on in different versions of android.

You can use app:useCompatPadding="true" and remove custom margins to maintain same margins across different versions of android

android studio code

Proof of concept

design view

like image 137
Saravanabalagi Ramachandran Avatar answered Sep 30 '22 17:09

Saravanabalagi Ramachandran


According to this link, it seems to be a bug in android design library. It says that:

in API <20, the button renders its own shadow, which adds to the overall logical width of the view, whereas in API >=20 it uses the new Elevation parameters which don't contribute to the view width.

So I have to provide two resource files for margin:

res/values:

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

And in res/values-v21:

<dimen name = "fab_margin_right">8dp</dimen>
like image 42
Misagh Emamverdi Avatar answered Sep 30 '22 17:09

Misagh Emamverdi