How to add floating action button on top of scrollview

You can use android.support.design.widget.CoordinatorLayout as parent layout. Make two xml one in which you can set scrollbar or list. Other is parent container who hold the entire info with your FloatingActionButton.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        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/content_main" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:elevation="6dp"
        app:backgroundTint="@color/colorAccent"
        app:pressedTranslationZ="12dp"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_add" />

</android.support.design.widget.CoordinatorLayout>

content_main.xml

Here you can put your ScrollBar. Its pretty easy.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:gravity="center"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main"
    tools:context=".MainActivity">

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

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


            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card1_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title1" />


            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view2"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius"
                android:layout_below="@id/card_view1">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card2_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top" />

                <TextView
                    android:id="@+id/info_text2"
                    android:layout_marginTop="16dp"
                    android:layout_marginBottom="0dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view3"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius"
                android:layout_below="@id/card_view2">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card3_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top" />

                <TextView
                    android:id="@+id/info_text3"
                    android:layout_marginTop="16dp"
                    android:layout_marginBottom="0dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent" />
            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card4_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title4" />


            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="16dp"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card5_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title5" />


            </android.support.v7.widget.CardView>


        </LinearLayout>
    </ScrollView>
</RelativeLayout>

try this:

android:layout_alignParentRight="true"

android:layout_alignParentBottom="true"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.nhscoding.safe2tell.STORIES"
    android:background="@color/stor_back">


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

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


            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card1_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title1" />


            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view2"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius"
                android:layout_below="@id/card_view1">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card2_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top" />

                <TextView
                    android:id="@+id/info_text2"
                    android:layout_marginTop="16dp"
                    android:layout_marginBottom="0dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view3"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius"
                android:layout_below="@id/card_view2">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card3_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top" />

                <TextView
                    android:id="@+id/info_text3"
                    android:layout_marginTop="16dp"
                    android:layout_marginBottom="0dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent" />
            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="@dimen/card_margin_bottom"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card4_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title4" />


            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginTop="@dimen/card_margin_top"
                android:layout_marginBottom="16dp"
                android:layout_marginLeft="@dimen/card_margin_left"
                android:layout_marginRight="@dimen/card_margin_right"
                card_view:cardCornerRadius="@dimen/card_radius">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/card_title_top"
                    android:layout_marginBottom="@dimen/card_title_bottom"
                    android:layout_marginLeft="@dimen/card_title_left"
                    android:layout_marginRight="@dimen/card_title_right"
                    android:text="@string/card5_title"
                    android:textSize="@dimen/card_title_size"
                    android:gravity="top"
                    android:id="@+id/title5" />


            </android.support.v7.widget.CardView>


        </LinearLayout>
    </ScrollView>

        <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="10dp">

        <com.getbase.floatingactionbutton.FloatingActionButton
            android:id="@+id/pink_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            fab:fab_icon="@drawable/ic_add"
            fab:fab_colorNormal="@color/fab_back"
            fab:fab_colorPressed="@color/fab_pressed_back"
            android:layout_gravity="end"
            android:layout_marginBottom="16dp"
            android:layout_marginRight="16dp" />
    </LinearLayout>

</RelativeLayout>

Relative Layout as base. Within that a Scroll View, then the Floating Action Button (with alignParent Right and Bottom set to true).

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_height="match_parent"
                android:layout_width="match_parent">

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

            <TextView
                    android:text="Your content"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

        </LinearLayout>

    </ScrollView>

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

            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"

            android:src="@drawable/ic_add"
            android:layout_margin="16dp"/>

</RelativeLayout>

BR Matthias


Later children in a RelativeLayout tend to float over earlier children in a RelativeLayout.

(I say "tend to" because Android 5.0's elevation stuff also plays a role, and the relationship between them is ill-defined)

So, to have a floating action button (FAB) float over a ScrollView in a RelativeLayout, make sure that the ScrollView is defined first in the XML, with the FAB after it. This will not affect the X/Y rules, but it should have the FAB appear over the ScrollView on the Z axis.

Another possibility, if you are only supporting Android 5.0+, would be to use android:elevation itself to raise the FAB.