Android 滚动视图在布局中隐藏顶部小部件

Android scrollview hiding top widget in layout

我先告诉你,这不是重复的问题。我已经尝试了 Whosebug 的所有解决方案。但对我没有用。

在我的应用程序中,我实现了两个网格布局。第一个水平滚动,第二个垂直滚动。但问题是当我将 scrollview 添加到第二个 Gridview 时,它隐藏了我的 texrview 和 imagview 的顶部内容。 我不明白。我做错了什么。 这是代码:

<FrameLayout 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"
    tools:context=".ui.home.HomeFragment">

    <LinearLayout
        android:orientation="vertical"
        android:weightSum="10"
        android:paddingTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

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

                    <TextView
                        android:id="@+id/textGrid"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="10dp"
                        android:fontFamily="@font/quicksand_bold"
                        android:paddingStart="20dp"
                        android:text="Welcome"
                        android:textColor="#141D50"
                        android:textSize="34sp"
                        android:textStyle="bold" />

                    <ImageView
                        android:id="@+id/search"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:layout_marginLeft="150dp"
                        android:src="@android:drawable/ic_search_category_default"
                        app:tint="#141D50"
                        tools:ignore="UnknownId" />

                </LinearLayout>
            </RelativeLayout>

            <HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:paddingTop="50dp">

                    <GridLayout
                        android:id="@+id/mainGrid"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="8"
                        android:alignmentMode="alignMargins"
                        android:columnOrderPreserved="false"
                        android:numColumns="6"
                        android:padding="8dp"
                        android:scrollbarAlwaysDrawHorizontalTrack="true"
                        android:scrollbarAlwaysDrawVerticalTrack="true"
                        android:scrollbars="horizontal">

                        
                      
                        <androidx.cardview.widget.CardView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_rowWeight="1"
                            android:layout_columnWeight="1"
                            android:layout_marginLeft="16dp"
                            android:layout_marginRight="16dp"
                            android:layout_marginBottom="16dp"
                            app:cardBackgroundColor="@color/colorPrimaryDark"
                            app:cardCornerRadius="8dp"
                            app:cardElevation="8dp">

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

                                <ImageView
                                    android:id="@+id/street"
                                    android:layout_width="wrap_content"
                                    android:layout_height="25dp"
                                    android:layout_gravity="center_horizontal"
                                    android:src="@drawable/dress"
                                    app:tint="@android:color/white" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="fill_parent"
                                    android:layout_below="@+id/electricity"
                                    android:layout_gravity="center"
                                    android:fontFamily="@font/quicksand_bold"
                                    android:paddingTop="10dp"
                                    android:text="Dress"
                                    android:textAlignment="center"
                                    android:textColor="@android:color/white"
                                    android:textSize="12sp"
                                    android:textStyle="bold" />

                            </LinearLayout>

                        </androidx.cardview.widget.CardView>

                        <androidx.cardview.widget.CardView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_rowWeight="1"
                            android:layout_columnWeight="1"
                            android:layout_marginLeft="16dp"
                            android:layout_marginRight="16dp"
                            android:layout_marginBottom="16dp"
                            app:cardBackgroundColor="@color/colorPrimaryDark"
                            app:cardCornerRadius="8dp"
                            app:cardElevation="8dp">

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

                                <ImageView
                                    android:id="@+id/other"
                                    android:layout_width="wrap_content"
                                    android:layout_height="25dp"
                                    android:layout_gravity="center_horizontal"
                                    android:src="@drawable/bags"
                                    app:tint="@android:color/white" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="fill_parent"
                                    android:layout_below="@+id/electricity"
                                    android:layout_gravity="center"
                                    android:fontFamily="@font/quicksand_bold"
                                    android:paddingTop="5dp"
                                    android:text="Bags"
                                    android:textAlignment="center"
                                    android:textColor="@android:color/white"
                                    android:textSize="12sp"
                                    android:textStyle="bold" />

                            </LinearLayout>

                        </androidx.cardview.widget.CardView>

                        <androidx.cardview.widget.CardView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_rowWeight="1"
                            android:layout_columnWeight="1"
                            android:layout_marginLeft="16dp"
                            android:layout_marginRight="16dp"
                            android:layout_marginBottom="16dp"
                            app:cardBackgroundColor="@color/colorPrimaryDark"
                            app:cardCornerRadius="8dp"
                            app:cardElevation="8dp">

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

                                <ImageView
                                    android:id="@+id/other1"
                                    android:layout_width="wrap_content"
                                    android:layout_height="25dp"
                                    android:layout_gravity="center_horizontal"
                                    android:src="@drawable/toys"
                                    app:tint="@android:color/white" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="fill_parent"
                                    android:layout_below="@+id/electricity"
                                    android:layout_gravity="center"
                                    android:fontFamily="@font/quicksand_bold"
                                    android:paddingTop="5dp"
                                    android:text="Toys"
                                    android:textAlignment="center"
                                    android:textColor="@android:color/white"
                                    android:textSize="12sp"
                                    android:textStyle="bold" />

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

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_weight="1"
            android:fillViewport="true"
            android:focusableInTouchMode="true"
            app:layout_constrainedHeight="true">

            <GridLayout
                android:id="@+id/mainGrid1"
                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">

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="100dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/electricity1"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/electricity"
                            android:layout_gravity="center"
                            android:text="water supply"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            android:textSize="18sp"
                            android:textStyle="bold" />

                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <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"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/water1"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="water supply"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            android:textSize="18sp"
                            android:textStyle="bold" />

                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="100dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/clean1"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="Cleanliness"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            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"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/street1"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="Street"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            android:textSize="18sp"
                            android:textStyle="bold" />

                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="100dp"
                    android:layout_rowWeight="1"
                    android:layout_columnWeight="1"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_marginBottom="16dp"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/m"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="Other"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            android:textSize="18sp"
                            android:textStyle="bold" />

                    </LinearLayout>

                </androidx.cardview.widget.CardView>

                <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"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

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

                        <ImageView
                            android:id="@+id/m1"
                            android:layout_width="wrap_content"
                            android:layout_height="104dp"
                            android:layout_gravity="center_horizontal" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="Other"
                            android:textAlignment="center"
                            android:textColor="#141D50"
                            android:textSize="18sp"
                            android:textStyle="bold" />

                    </LinearLayout>
                </androidx.cardview.widget.CardView>
            </GridLayout>
        </ScrollView>
     </LinearLayout>
</FrameLayout>

它发生了,因为你在 RelativeLayout 中写了 android:layout_weight="1"

首先,从 RelativeLayout 中删除 android:layout_weight="1"

其次,将RelativeLayout高度设置为wrap_content。

之前:

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

之后:

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