ScrollView 只能承载一个具有 relativelayout 的直接子级

ScrollView can host only one direct child with relativelayout

我的布局在使用 RelativeLayout 时导致错误 "ScrollView can host only one direct child"。

我想在工具栏后面添加一个滚动视图。 ScrollView 中的所有内容都应该可以垂直滚动,但是当我尝试这段代码时,它会导致上述错误 "ScrollView can host only one direct child with relativelayout".

Layout.xml 文件:

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

    //Scroll view starts here 
        <include
            android:id="@+id/toolbar"
            layout="@layout/view_toolbar" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/grey_868686">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="Most Download"
                android:layout_centerVertical="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="More"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"
                android:onClick="onOtherVideo"/>

        </RelativeLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_video_terbaru"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/grey_868686">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="Funny Video"
                android:layout_centerVertical="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="More"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"
                android:onClick="onOtherVideoFunny"/>

        </RelativeLayout>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_funny_video"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/grey_868686">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="Religy Video"
                android:layout_centerVertical="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="More"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"
                android:onClick="onOtherReligyVideo"/>

        </RelativeLayout>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_religi_video"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/grey_868686">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="Others Video"
                android:layout_centerVertical="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="More"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:textSize="14sp"
                android:textColor="@color/white"
                android:paddingRight="8dp"
                android:paddingLeft="8dp"
                android:onClick="onOtherMoreVideo"/>

        </RelativeLayout>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_others_video"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        </ScrollView>
    </LinearLayout>

采用相对布局或线性布局,然后将所有视图放入其中,然后用滚动视图包裹这个相对布局 您的问题将得到解决。

Md.ibrahim khalil 给出的答案完全正确,

试试用这个替换你的布局,

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

    //Scroll view starts here

    <include
        android:id="@+id/toolbar"
        layout="@layout/view_toolbar" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@color/grey_868686">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="Most Download"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:onClick="onOtherVideo"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="More"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

            </RelativeLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_video_terbaru"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@color/grey_868686">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="Funny Video"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:onClick="onOtherVideoFunny"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="More"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

            </RelativeLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_funny_video"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@color/grey_868686">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="Religy Video"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:onClick="onOtherReligyVideo"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="More"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

            </RelativeLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_religi_video"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@color/grey_868686">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="Others Video"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical"
                    android:onClick="onOtherMoreVideo"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:text="More"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

            </RelativeLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_others_video"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>