web-dev-qa-db-ja.com

java.lang.IllegalStateException:ScrollViewは直接子を1つだけホストできます

私は単にスクロールビューを追加してこのレイアウトをスクロールする機能を追加しようとしていますが、レイアウトをロードしようとするたびに「Java.lang.IllegalStateException:ScrollView can host one one direct direct child」というエラーが表示されます理由はわかりません。

どんな提案でも大歓迎です。

ソース:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:layout_weight="1"
    Android:orientation="vertical" >

    <RelativeLayout>

        <View
            Android:layout_width="1dp"
            Android:layout_height="5dp" >
        </View>

        <ScrollView
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:layout_weight="1" >

            <com.google.Android.youtube.player.YouTubePlayerView
                Android:id="@+id/youtubeplayerview"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content" />

            <View
                Android:layout_width="1dp"
                Android:layout_height="5dp" >
            </View>

            <TextView
                Android:id="@+id/textView1a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Isaac Daniel at CNN Anderson Cooper"
                Android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                Android:id="@+id/textView2a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="by idconex"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                Android:id="@+id/textView3a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="675,000,000 views"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <com.google.Android.youtube.player.YouTubePlayerView
                Android:id="@+id/youtubeplayerview2"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content" />

            <TextView
                Android:id="@+id/textView1b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Rage Against The Machine - Bulls on Parade"
                Android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                Android:id="@+id/textView2b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="by RATMVEVO"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                Android:id="@+id/textView3b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="1,195,601 views"
                Android:textAppearance="?android:attr/textAppearanceSmall" />
        </ScrollView>
    </RelativeLayout>

</LinearLayout>

編集(CodeMagicの回答に応じて)

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:layout_weight="1"
    Android:orientation="vertical" >


<ScrollView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1" >
      <LinearLayout Android:layout_width="match_parent"
                    Android:layout_height="wrap_content">



            <com.google.Android.youtube.player.YouTubePlayerView
                Android:id="@+id/youtubeplayerview"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content" />

            <View
                Android:layout_width="1dp"
                Android:layout_height="5dp" >
            </View>

            <TextView
                Android:id="@+id/textView1a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Isaac Daniel at CNN Anderson Cooper"
                Android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                Android:id="@+id/textView2a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="by idconex"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                Android:id="@+id/textView3a"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="675,000,000 views"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <com.google.Android.youtube.player.YouTubePlayerView
                Android:id="@+id/youtubeplayerview2"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content" />

            <TextView
                Android:id="@+id/textView1b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Rage Against The Machine - Bulls on Parade"
                Android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                Android:id="@+id/textView2b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="by RATMVEVO"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                Android:id="@+id/textView3b"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="1,195,601 views"
                Android:textAppearance="?android:attr/textAppearanceSmall" />

         </LinearLayout>
15
user3009687

エラーが言うように

ScrollView can Host only one direct child

Viewの内側にLinearLayoutsをラップして、ScrollViewが直接の子としてLinearLayoutのみを持つようにします。

ドキュメントから

ScrollViewはFrameLayoutです。つまり、スクロールするコンテンツ全体を含む子を1つ配置する必要があります。この子自体が、オブジェクトの複雑な階層を持つレイアウトマネージャーである場合があります。よく使用される子は、垂直方向のLinearLayoutであり、ユーザーがスクロールできる最上位アイテムの垂直配列を提示します。

<ScrollView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1" >
      <LinearLayout Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:orientation="vertical">
           // all the views currently in your ScrollView
     </LinearLayout>
</ScrollView>
39
codeMagic