滚动视图使崩溃的原因

时间:2017-02-22 09:51:16

标签: android android-layout scrollview

我的应用程序通过滚动视图的下面错误来崩溃,甚至子项都在父视图中分组。只有当互联网关闭时才会发生这种情况,否则它就会起作用。

02-22 14:26:20.504 13277-13277/com.eonelectric.eon E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.eonelectric.eon, PID: 13277
                                                                 java.lang.IllegalStateException: ScrollView can host only one direct child
                                                                     at android.widget.ScrollView.addView(ScrollView.java:248)
                                                                     at android.support.design.widget.Snackbar.showView(Snackbar.java:483)
                                                                     at android.support.design.widget.Snackbar$1.handleMessage(Snackbar.java:167)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:98)
                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5343)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

我的布局文件就在这里。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:fillViewport="true">

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/loginBackgroundIv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/login_bg"
        tools:ignore="ContentDescription"/>

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/profilePicIv"
        android:layout_width="135dp"
        android:layout_height="110dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/user"
        app:civ_border_color="#fff"
        app:civ_border_width="2dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="130dp"
        android:orientation="vertical">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/nameWraper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/nameEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:singleLine="true"
                android:textColor="#ffffff" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/phoneWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/phoneEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:maxLength="10"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/emailWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/emailEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/pwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/pwdEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/repwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/repwdEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>
        </LinearLayout>

        <!--<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="User type ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/userTypeSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60"
                android:entries="@array/userTypeArray" />
        </LinearLayout>-->

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="State ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/stateSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60" />
        </LinearLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/empCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/empCodeEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <!--<android.support.design.widget.TextInputLayout
                android:id="@+id/empDivCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/empDivCodeEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>-->
        </LinearLayout>

        <Button
            android:id="@+id/finishSignupBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Sign Up"
            android:textColor="@android:color/white" />
    </LinearLayout>

</FrameLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:0)

       <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/loginBackgroundIv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        tools:ignore="ContentDescription"/>

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/profilePicIv"
        android:layout_width="135dp"
        android:layout_height="110dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        app:civ_border_color="#fff"
        app:civ_border_width="2dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="130dp"
        android:orientation="vertical">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/nameWraper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/nameEt"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:singleLine="true"
                android:textColor="#ffffff" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/phoneWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/phoneEt"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:maxLength="10"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/emailWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/emailEt"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/pwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/pwdEt"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/repwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/repwdEt"

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>
        </LinearLayout>

        <!--<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="User type ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/userTypeSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60"
                android:entries="@array/userTypeArray" />
        </LinearLayout>-->

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="State ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/stateSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60" />
        </LinearLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/empCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/empCodeEt"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <!--<android.support.design.widget.TextInputLayout
                android:id="@+id/empDivCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/empDivCodeEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>-->
        </LinearLayout>

        <Button
            android:id="@+id/finishSignupBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Sign Up"
            android:textColor="@android:color/white" />
    </LinearLayout>

</FrameLayout>

    

答案 1 :(得分:0)

ScrollView只能有一个子视图。在LinearLayout内创建ScrollView以包装所有子视图。喜欢 -

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


   <ScrollView 
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         xmlns:tools="http://schemas.android.com/tools"
         android:fillViewport="true">

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


    <ImageView
        android:id="@+id/loginBackgroundIv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/login_bg"
        tools:ignore="ContentDescription"/>

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/profilePicIv"
        android:layout_width="135dp"
        android:layout_height="110dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/user"
        app:civ_border_color="#fff"
        app:civ_border_width="2dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="130dp"
        android:orientation="vertical">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/nameWraper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/nameEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:singleLine="true"
                android:textColor="#ffffff" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/phoneWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/phoneEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:maxLength="10"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/emailWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/emailEt"
                style="@style/custom_et"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/pwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/pwdEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/repwdwrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/repwdEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textWebPassword"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>
        </LinearLayout>

        <!--<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="User type ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/userTypeSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60"
                android:entries="@array/userTypeArray" />
        </LinearLayout>-->

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:weightSum="100">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:padding="8dp"
                android:text="State ?"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

            <Spinner
                android:id="@+id/stateSpinner"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="60" />
        </LinearLayout>

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/empCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/empCodeEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>

            <!--<android.support.design.widget.TextInputLayout
                android:id="@+id/empDivCodeWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/empDivCodeEt"
                    style="@style/custom_et"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
            </android.support.design.widget.TextInputLayout>-->
        </LinearLayout>

        <Button
            android:id="@+id/finishSignupBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Sign Up"
            android:textColor="@android:color/white" />
    </LinearLayout>

</LinearLayout>

</ScrollView>
</FrameLayout>