Android ScrollView 不工作说 Scrollview cannot host multiple childs

Android ScrollView is not working saying Scrollview cannot host multiple childs

您好,在我的 android 应用程序中,我有多个线性布局并在其中编辑文本在我的布局文件中,我还有 5 个其他线性布局,我应该能够滚动该页面,但我面临问题,尝试了很多解决方案,但都没有用。

这是我试过的。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Team :"
        android:textColor="#000000"
        android:textSize="25dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"/>
    <Spinner
        android:id="@+id/TeamSpinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="10dp"></Spinner>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/number1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1)"
        android:textColor="#000000"
        android:textSize="20dp"
        android:layout_marginTop="25dp"/>
    <EditText
        android:id="@+id/first1"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:hint="FirstName"
        android:background="@drawable/green_border"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="30dp"
        android:textColor="#000000"
        android:textSize="20dp"/>
    <EditText
        android:id="@+id/last1"
        android:inputType="numberDecimal"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:background="@drawable/green_border"
        android:textSize="20dp"
        android:hint="LastName"
        android:textColor="#000000"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <EditText
        android:id="@+id/email1"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="22dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="Email"
        android:textColor="#000000"
        android:textSize="20dp" ></EditText>
    <EditText
        android:id="@+id/mobile1"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="MobileNo"
        android:inputType="numberDecimal"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/number2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2)"
        android:textColor="#000000"
        android:textSize="20dp"
        android:layout_marginTop="10dp"/>
    <EditText
        android:id="@+id/first2"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:hint="FirstName"
        android:background="@drawable/green_border"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:textSize="20dp"/>
    <EditText
        android:id="@+id/last2"
        android:inputType="numberDecimal"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:background="@drawable/green_border"
        android:textSize="20dp"
        android:hint="LastName"
        android:textColor="#000000"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <EditText
        android:id="@+id/email2"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="22dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="Email"
        android:textColor="#000000"
        android:textSize="20dp" ></EditText>
    <EditText
        android:id="@+id/mobile2"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="MobileNo"
        android:inputType="numberDecimal"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/number3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3)"
        android:textColor="#000000"
        android:textSize="20dp"
        android:layout_marginTop="10dp"/>
    <EditText
        android:id="@+id/first3"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:hint="FirstName"
        android:background="@drawable/green_border"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:textSize="20dp"/>
    <EditText
        android:id="@+id/last3"
        android:inputType="numberDecimal"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:background="@drawable/green_border"
        android:textSize="20dp"
        android:hint="LastName"
        android:textColor="#000000"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <EditText
        android:id="@+id/email3"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="22dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="Email"
        android:textColor="#000000"
        android:textSize="20dp" ></EditText>
    <EditText
        android:id="@+id/mobile3"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="MobileNo"
        android:inputType="numberDecimal"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/number4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4)"
        android:textColor="#000000"
        android:textSize="20dp"
        android:layout_marginTop="10dp"/>
    <EditText
        android:id="@+id/first4"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:hint="FirstName"
        android:background="@drawable/green_border"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:textSize="20dp"/>
    <EditText
        android:id="@+id/last4"
        android:inputType="numberDecimal"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:background="@drawable/green_border"
        android:textSize="20dp"
        android:hint="LastName"
        android:textColor="#000000"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <EditText
        android:id="@+id/email4"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="22dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="Email"
        android:textColor="#000000"
        android:textSize="20dp" ></EditText>
    <EditText
        android:id="@+id/mobile4"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="MobileNo"
        android:inputType="numberDecimal"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/number5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5)"
        android:textColor="#000000"
        android:textSize="20dp"
        android:layout_marginTop="10dp"/>
    <EditText
        android:id="@+id/first5"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:hint="FirstName"
        android:background="@drawable/green_border"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:textSize="20dp"/>
    <EditText
        android:id="@+id/last5"
        android:inputType="numberDecimal"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:background="@drawable/green_border"
        android:textSize="20dp"
        android:hint="LastName"
        android:textColor="#000000"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <EditText
        android:id="@+id/email5"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="22dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="Email"
        android:textColor="#000000"
        android:textSize="20dp" ></EditText>
    <EditText
        android:id="@+id/mobile5"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/green_border"
        android:hint="MobileNo"
        android:inputType="numberDecimal"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray"/>
</LinearLayout>

发生这种情况的原因是滚动视图需要有一个子视图,试试这个(也适用于垂直线性布局):

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/grey"
        >

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
<!-- put the other stuff in here -->

    </RelativeLayout>
</ScrollView>

我也建议read about it一点,你可能会找到一些更有用的信息。

那是因为你的 scrollView 里面有很多 LinearLayouts; 你只能有一个child(这个child可以有很多自己的Childs)。
尝试在 scrollView 下添加一个垂直方向的 LineartLayout,它将包裹所有的 Childs。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/grey">

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!-- put all of the other layouts here -->

</LinearLayout>
</ScrollView>

您需要设置一个容器布局,它将成为所有线性布局的父级。

看起来像这样(容器可以是相对的或线性的):

<ScrollView
    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:fillViewport="true">


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

    (all your view elements)

    </RelativeLayout>
</ScrollView>