首页 > 解决方案 > 滚动视图只有一个直接子错误

问题描述

这是我的 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"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".Dashboard"
        android:orientation="vertical">
        <include layout="@layout/header"/>

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_margin="16dp">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="35dp"
                    android:layout_marginLeft="5dp"
                    android:layout_gravity="left"
                    android:id="@+id/iv_cnic"
                    android:src="@drawable/icard1"
                    />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="vertical">

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:textSize="14sp"
                                android:textStyle="normal"
                                android:id="@+id/tv_cnic"
                                android:layout_marginTop="5dp"
                                android:textColor="#800000"/>
            </LinearLayout>

        </LinearLayout>
        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "0dp"
            android:gravity="center"

            android:weightSum = "3"
            android:orientation = "horizontal" >
            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >
                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/car1"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"
                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:id="@+id/name"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>


            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"
                android:id="@+id/tv_register"
                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >

                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/mtag"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Request M-Tag"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"
                android:id="@+id/s_recharge"
                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >

                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/lottery"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:text="Recharge"
                        android:textColor="@color/black"
                        android:textSize="12sp"
                        android:textStyle="normal" />
                </RelativeLayout >

            </androidx.cardview.widget.CardView>

        </LinearLayout>

        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "0dp"
            android:gravity="center"

            android:weightSum = "3"
            android:orientation = "horizontal" >

            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"
                android:id="@+id/c_compass"
                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >

                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/compass"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                         />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Qibla \u0026 Safar Dua"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />
                </RelativeLayout >

            </androidx.cardview.widget.CardView>


            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >


                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/travel"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Travel Advisory"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>


            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >



                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/tollroad"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Toll Plazas Info"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>



        </LinearLayout>

        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "0dp"
            android:gravity="center"

            android:weightSum = "3"
            android:orientation = "horizontal" >

            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >


                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/destination"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Journey Planner"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />
                </RelativeLayout >

            </androidx.cardview.widget.CardView>


            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >


                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/highway"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Motorway Information"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>


            <androidx.cardview.widget.CardView
                android:layout_weight = "1"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:layout_margin = "5dp"

                android:clickable = "true"
                app:cardBackgroundColor="@color/grey_10"
                app:cardCornerRadius = "15dp"
                app:cardElevation = "3dp">

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:padding = "3dp" >



                    <ImageView
                        android:layout_width = "40dp"
                        android:layout_height = "40dp"
                        android:src = "@drawable/tollroad"
                        android:layout_marginTop="5dp"
                        android:layout_centerHorizontal="true"

                        />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text="Toll Rate Info"
                        android:textSize="12sp"

                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="60dp"
                        android:textColor = "@color/black"
                        android:textStyle = "normal" />

                </RelativeLayout >

            </androidx.cardview.widget.CardView>



        </LinearLayout>


        <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "10dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginRight = "16dp"
            android:weightSum = "2"
            android:orientation = "horizontal" >


        </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="0dp">


        <androidx.cardview.widget.CardView
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_margin = "16dp"
            android:clickable = "true"
            app:cardElevation = "13dp"
            app:cardCornerRadius = "15dp"
            android:focusable = "true"
            app:cardBackgroundColor = "#800000" >

            <LinearLayout
                android:padding = "10dp"
                android:gravity = "center"
                android:layout_width = "match_parent"
                android:layout_height = "100dp"
                android:id="@+id/profile"
                android:orientation = "horizontal" >

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

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text = "M-Tag Vehicle Details"
                        android:textColor = "#fff"
                        android:textSize = "20dp" />

                    <TextView
                        android:layout_width = "wrap_content"
                        android:layout_height = "wrap_content"
                        android:text = "Click here to see details and records "
                        android:textColor = "#fff"
                        android:textSize = "10dp" />

                </LinearLayout >

                <RelativeLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "match_parent" >

                    <ImageView
                        android:layout_width = "50dp"
                        android:layout_height = "50dp"
                        android:src = "@drawable/car1"
                        android:layout_centerVertical = "true"
                        android:layout_alignParentRight = "true" />

                </RelativeLayout >

            </LinearLayout >
        </androidx.cardview.widget.CardView>

    </LinearLayout>

        </ScrollView>

        <include
        layout="@layout/bottom_navigation"/>

    </LinearLayout >

标签: androidxml

解决方案


官方文档中所述,

滚动视图中可能只有一个直接子视图。要在滚动视图中添加多个视图,请让您添加视图组的直接子级,例如 LinearLayout,并在该 LinearLayout 中放置其他视图。

尝试以下

<androidx.constraintlayout.widget.ConstraintLayout 
    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">
   
        <include
        android:id="@+id/header_include"
        layout="@layout/header"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

        <include
        android:id="@+id/navigation_include"
        layout="@layout/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

        <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toTopOf="@+id/navigation_include"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/header_include">

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

        <!-- add this layout as a view group for the rest of your linear layout -->
            <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

                <!--rest of your linear layout-->

            </LinearLayout>
 
            </ScrollView>
        </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

推荐阅读