web-dev-qa-db-fra.com

java.lang.IllegalStateException: ScrollView ne peut héberger qu'un seul enfant direct

J'essaie simplement d'ajouter la possibilité de faire défiler cette disposition en ajoutant une vue de défilement, mais chaque fois que j'essaie de charger la disposition, j'obtiens une erreur indiquant "Java.lang.IllegalStateException: ScrollView ne peut héberger qu'un seul enfant direct" et Je ne sais pas pourquoi.

Les suggestions sont très appréciées.

LA SOURCE:

<?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>

EDIT (En réponse à la réponse de 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

Tout comme l'erreur le dit

ScrollView can Host only one direct child

Enveloppez les View à l'intérieur d'un LinearLayout pour que le ScrollView ait uniquement le LinearLayout comme enfant direct.

à partir des documents

Un ScrollView est un FrameLayout, ce qui signifie que vous devez y placer un enfant contenant tout le contenu à faire défiler; cet enfant peut être lui-même un gestionnaire de mise en page avec une hiérarchie complexe d'objets. Un enfant qui est souvent utilisé est un LinearLayout dans une orientation verticale, présentant un tableau vertical d'éléments de niveau supérieur que l'utilisateur peut parcourir.

<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