はじめに
スクロール可能な画面で下に配置されているViewを、画面に余裕があれば、画面いっぱいに使ってViewを配置するようなレイアウトの実装方法。
実装方法
<ScrollView
...
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
...
android:id="@+id/text_view"
app:layout_constraintBottom_toTopOf="@id/button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside"
/>
<Button
...
android:id="@+id/button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_view"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
fillViewport
fillViewport
を設定することで、ScrollView内のレイアウトを拡大して画面いっぱいに表示できる。
<ScrollView
...
android:fillViewport="true"
/>
spread_inside
下に配置するViewと上のViewにChainStyleを指定することで、Viewを画面端に寄せられる。
具体的には、上のViewのlayout_constraintBottom_toTopOf
に下のView、layout_constraintVertical_chainStyle
にspread_inside
を設定する。
また、下のViewのlayout_constraintTop_toBottomOf
に上のViewを設定する。
<TextView
...
android:id="@+id/text_view"
app:layout_constraintBottom_toTopOf="@id/button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside"
/>
<Button
...
android:id="@+id/button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_view"
/>