LinearLayoutをスクロール可能にする方法を教えてください。


241

画面に多くのアイテムがあり、ユーザーが下にスクロールできるようにスクロールバーを使用する必要があります。ただし、スクロールが表示されていないか、機能していません。スクロールバーをに追加するにはどうすればよいLinearLayoutですか?


回答:


459

線形レイアウトを <ScrollView>

例については、こちらをご覧ください。

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       xmlns:android="http://schemas.android.com/apk/res/android">
       <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <LinearLayout 
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">
                  <!-- Content here -->
            </LinearLayout>
      </ScrollView>
 </LinearLayout>

注:fill_parentは廃止され、APIレベル8 以降でmatch_parentに名前が変更されました。


1
@DanielMagnussonリンクはまだここで機能します...ここにビデオガイドがあります:youtube.com/watch
ブライアンデニー

33
外側のLinearLayoutは必要ないと思います。
Lawrence Kesteloot 2013年

1
@Lawrenceいいえ、それは必須ではありませんが、ビューの残りの部分がどのように見えるかに依存する可能性があります。
ブライアンデニー2013年

1
上部のlinearlayoutにScrollviewしかない場合、「このScrollViewレイアウトまたはそのLinearLayoutの親は役に立たないので、背景属性を他のビューに転送してください」という警告が表示されます。
Niels、

2
いくつかの重要な注意:ScrollViewには子が1つだけ必要
O-9

145
<ScrollView 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/scroll" 
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

      <LinearLayout 
            android:id="@+id/container"
            android:orientation="vertical" 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
      </LinearLayout>

 </ScrollView>

4

これは、タグを使用して行うことができます<ScrollView>ScrollView、一つのことは、あなたがそれを思い出させるために持っている、ScrollViewは、単一の子供を持っている必要があります

レイアウト全体をスクロール可能にする場合<ScrollView>は、上部に追加します。以下の例を確認してください。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout 
        android:id="@+id/container" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <!-- Content here -->
    </LinearLayout>

</ScrollView>

ただし、レイアウトの一部をスクロール可能にする<ScrollView>場合は、その部分に追加します。以下の例を確認してください。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="400dp">

    <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">
                <!-- Content here -->
        </LinearLayout>

    </ScrollView>

</LinearLayout>

4

試行錯誤を繰り返したのがこちらです。

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

ScrollViewは子を1つしか持つことができないため、その子は線形レイアウトです。次に、他のすべてのレイアウトタイプが最初の線形レイアウトで発生します。私はまだ相対レイアウトを含めようとしませんでしたが、それらは私を狂わせるので、正気が戻るまで待ちます。


書式を修正してください。最初の行はコードセクションから抜けています。編集は簡単なため、サイトでは修正できません。
Caltor


0

ScrollViewをレイアウトファイルの最初の子として配置し、linearlayoutをその中に配置する必要があります。これで、Androidはコンテンツと利用可能なデバイスサイズに基づいて、スクロール可能なアイテムを表示するかどうかを決定します。

ScrollViewは複数の子を持つことができないため、linearlayoutに兄弟がないことを確認してください。


0
 <LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        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">
                <---------Content Here --------------->
            </LinearLayout>
       </ScrollView>
    </LinearLayout>

-27

あなたはlinearLayoutに属性を追加できます: android:scrollbars="vertical"


4
これは、スクロールバーのみの可視性を制御します。しかし、それはあなたのためにスクロールビューを作成しません。
Botond Kopacz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.