How to add floating action button on top of scrollview

后端 未结 4 1715
难免孤独
难免孤独 2021-01-04 02:19

I have a floating action button that I would like to add on top of a scrollview so that the button stays, even if you scroll. I want it on the top of the scrollview and in t

相关标签:
4条回答
  • 2021-01-04 02:43

    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.

    0 讨论(0)
  • 2021-01-04 02:43

    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

    0 讨论(0)
  • 2021-01-04 02:54

    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>
    
    0 讨论(0)
  • 2021-01-04 02:59

    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>
    
    0 讨论(0)
提交回复
热议问题