【Android】ScrollViewを使用して画面を縦スクロールさせる

こんにちは!

今回はScrollViewを使用して画面をスクロールさせてみましょう!

ScrollViewとは?

ScrollView内に配置されたコンテンツの高さがScrollViewの高さを超えた場合、スクロールが可能になるLayout Viewです。

ScrollView等を配置しないとスクロールはできません。コンテンツの高さが端末画面外になってもScrollViewを配置しない限り自動でスクロールしてくれません。

私はAndroid開発を始めた頃にScrollViewの存在を知らなかったので「あれ?スクロールできない!」と喚いていました。。

では実装していきます。注意点等は後述します。

ScrollViewを使用する

レイアウトXMLにScrollViewを使用してスクロールしてみましょう!

筆者はスクロールさせたいコンテンツとして4つのViewを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- コンテンツ -->
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <View
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:background="#880000" />

            <View
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginTop="32dp"
                android:background="#008800" />

            <View
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginTop="32dp"
                android:background="#000088" />

            <View
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginTop="32dp"
                android:background="#888800" />

        </LinearLayout>

    </ScrollView>

</LinearLayout>

ポイント

1.スクロールさせたいコンテンツをScrollViewの子要素に追加する

スクロールさせたいコンテンツをScrollViewの子要素に追加するだけでスクロールしてくれます。

注意点としてScrollViewの子要素は一つのみです。

ScrollViewに複数の子要素を追加するとクラッシュしてしまいます。

コンテンツの要素が一つの場合はそのコンテンツViewをScrollViewに追加すれば問題ないですが、

コンテンツの要素が複数ある場合はScrollViewに子要素としてLinearLayout等のViewGroupを追加してViewGroupに対してコンテンツの要素を追加するとクラッシュを回避する事ができます。

最後に

いかがでしたでしょうか

ScrollViewを実装するとスクロールができます。

また、ListViewやRecyclerView等はデフォルトでスクロール機能が備わっているのでScrollViewを追加する必要はありません。

それでは!

コメント

タイトルとURLをコピーしました