17

スクロールしてもボタンが残るように、スクロールビューの上に追加したいフローティングアクションボタンがあります。スクロールビューの上部と画面の右下隅に配置したい。これを達成するには、どのようなビューの組み合わせを使用する必要がありますか?

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

4 に答える 4

16

a の後の子は、 a のRelativeLayout前の子よりも浮く傾向がありRelativeLayoutます。

elevation(Android 5.0のものも役割を果たしており、それらの関係は明確に定義されていないため、「傾向がある」と言います)

そのため、フローティング アクション ボタン (FAB) を 内の の上にフロートさせるScrollViewには、XML で が最初に定義され、FAB がその後にあることRelativeLayoutを確認してください。ScrollViewこれは X/Y ルールには影響しませんが、FAB がScrollViewZ 軸上に表示されるはずです。

Android 5.0+ のみをサポートしている場合は、android:elevationそれ自体を使用して FAB を上げることもできます。

于 2015-02-21T21:26:56.793 に答える
12

これを試して:

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>
于 2015-02-21T21:23:41.713 に答える