如何在scrollview顶部添加浮动操作按钮

use*_*841 10 user-interface android scrollview android-studio floating-action-button

我有一个浮动动作按钮,我想在滚动视图的顶部添加,以便按钮保持,即使你滚动.我希望它在滚动视图的顶部和屏幕的右下角.我需要用什么组合的视图来实现这一目标?

这是xml文件:

<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">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom"
        >

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


    <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>
Run Code Online (Sandbox Code Playgroud)

Com*_*are 14

后来的孩子RelativeLayout往往漂浮在早期的孩子身上RelativeLayout.

(我说"倾向于",因为Android 5.0的elevation东西也起作用,它们之间的关系是不明确的)

因此,要让FAB浮动在a ScrollViewRelativeLayout,请确保ScrollView首先在XML中定义,然后使用FAB.这不会影响X/Y规则,但它应该使FAB出现在ScrollViewZ轴上.

如果你只支持Android 5.0+,另一种可能性就是用android:elevation它来提升FAB.


Mil*_*uri 11

试试这个:

机器人:layout_alignParentRight = "真"

机器人:layout_alignParentBottom = "真"

<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>
Run Code Online (Sandbox Code Playgroud)


Mat*_*ias 6

相对布局作为基础。在该滚动视图中,然后是浮动操作按钮(将alignParent Right 和Bottom 设置为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>
Run Code Online (Sandbox Code Playgroud)

BR马蒂亚斯