Android 在滚动视图中设置GridLayout时拉伸布局

Android 在滚动视图中设置GridLayout时拉伸布局,android,Android,我试图将网格布局放在滚动视图中,但当我将网格布局放在滚动视图中时,网格内的所有卡都被拉伸,就像滚动没有得到匹配的父卡一样 我怎样才能解决这个问题 当我在ConstraintLayout中正常设置时,所有内容都会正确显示 下面是它的样子: 而我的XML代码如下所示: <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android

我试图将网格布局放在滚动视图中,但当我将网格布局放在滚动视图中时,网格内的所有卡都被拉伸,就像滚动没有得到匹配的父卡一样

我怎样才能解决这个问题

当我在ConstraintLayout中正常设置时,所有内容都会正确显示

下面是它的样子:

而我的XML代码如下所示:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/triangle_background"
    tools:context=".HomeActivity">


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

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

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="2">

                <TextView
                    android:id="@+id/textBenvenuto"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:text="Benvenuto"
                    android:textColor="#ffffff"
                    android:textSize="34sp" />

            </RelativeLayout>


            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="8"
                android:alignmentMode="alignMargins"
                android:columnCount="2"
                android:columnOrderPreserved="false"
                android:padding="14dp"
                android:rowCount="3">

                <!-- Row 1 -->


                <!-- Column 1 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_inventory" />


                        <TextView
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="Inventario"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <!-- Column 2 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_price_tag" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Verifica Prezzo"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <!-- Row 2 -->

                <!-- Column 1 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_warehouse" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Lotti"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <!-- Column 2 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_delivery_truck" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Ordini"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <!-- Row 3 -->

                <!-- Column 1 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_check_list" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Riepilogo Oridni"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <!-- Column 2 -->
                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:foreground="?attr/selectableItemBackground"
                    app:cardBackgroundColor="#FFFFFF"
                    app:cardCornerRadius="3dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_margin="16dp"
                        android:gravity="center_horizontal|center_vertical"
                        android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="80dp"
                            android:layout_gravity="center_horizontal"
                            app:srcCompat="@drawable/ic_timing_belt" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Impostazioni"
                            android:textAlignment="center"
                            android:textColor="#3D5AFE"
                            android:textSize="18sp"
                            android:textStyle="bold" />
                    </LinearLayout>

                </androidx.cardview.widget.CardView>

            </GridLayout>

        </LinearLayout>


    </ScrollView>




</androidx.constraintlayout.widget.ConstraintLayout>

好的,您需要在scrollview中添加这一行
android:fillViewport=“true”

ScrollView应该是这样的

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">


卸下重量并使用height@UsamaAltaf它不会改变任何东西我想它会自动设置为匹配父对象,而高度我必须设置一个静态高度通过这种方式网格填充视口,而不是成为可滚动的