スクロールアクションボタンの上にスクロールビューの上に追加したいので、スクロールしてもボタンはそのまま残ります。スクロールビューの上部と画面の右下隅に配置します。これを実現するために使用する必要があるビューの組み合わせは何ですか?
次に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>
RelativeLayout
の後の子は、RelativeLayout
の前の子の上に浮かぶ傾向があります。
(Android 5.0のelevation
も役割を果たし、それらの間の関係が明確でないため、「傾向がある」と言います)
したがって、ScrollView
内のRelativeLayout
の上にFABをフロートさせるには、ScrollView
がXMLで最初に定義され、その後にFABが続くことを確認してください。これはX/Yルールには影響しませんが、FABがZ軸のScrollView
の上に表示されるはずです。
別の可能性として、Android 5.0+のみをサポートしている場合は、Android:elevation
自体を使用してFABを上げることができます。
これを試して:
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>
ベースとしての相対レイアウト。そのスクロールビュー内でthenフローティングアクションボタン(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>
BRマティアス
Android.support.design.widget.CoordinatorLayout
を親レイアウトとして使用できます。スクロールバーまたはリストを設定できる2つのxmlを作成します。もう1つは、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
ここにスクロールバーを置くことができます。とても簡単です。
<?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>