首页 > 解决方案 > ScrollView 未将所有组件显示到手机屏幕

问题描述

我在 android 中遇到了 ScrollView 的问题。我真的不知道如何解决这个奇怪的问题。ScrollView 无法将所有组件显示到屏幕上,按钮隐藏在手机屏幕下方。

当我滚动到最后时看到的屏幕

实际画面

<LinearLayout
    android:id="@+id/deviceTitle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <ImageButton
        android:id="@+id/backButton"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_margin="15dp"
        android:background="@android:color/transparent"
        android:padding="20dp"
        android:src="@drawable/ic_baseline_arrow_back_24" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="15dp"
        android:gravity="center"
        android:text="Account Settings"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

</LinearLayout>

<View
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#D3D3D3"
    app:layout_constraintTop_toBottomOf="@+id/deviceTitle" />

<ScrollView
    android:id="@+id/scroll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/view">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:paddingBottom="10dp">

        <androidx.cardview.widget.CardView
            android:id="@+id/deviceList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="5dp"
            app:cardCornerRadius="5dp"
            app:cardUseCompatPadding="true"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <FrameLayout
                android:id="@+id/frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="20dp">

                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <TextView
                        android:id="@+id/personal_details"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Personal Details"
                        android:textColor="@android:color/black"
                        android:textSize="16sp"
                        android:textStyle="bold"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />

                    <TextView
                        android:id="@+id/username"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="USERNAME"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/personal_details" />

                    <TextView
                        android:id="@+id/edit_username"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_username"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_username"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:endIconMode="clear_text"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/username">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditUsernameText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="text" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/email"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="EMAIL ADDRESS"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_username" />

                    <TextView
                        android:id="@+id/edit_email"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_email"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_email"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:endIconMode="clear_text"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/email">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditEmailText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="text" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/pw"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="PASSWORD"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_email" />

                    <TextView
                        android:id="@+id/edit_pw"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_pw"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_pw"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:endIconMode="clear_text"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/pw">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditPasswordText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="text"
                            android:text="********" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/phone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="PHONE NO."
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_pw" />

                    <TextView
                        android:id="@+id/edit_phone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_phone"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_phone"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:endIconMode="clear_text"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/phone">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditPhoneText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="text" />
                    </com.google.android.material.textfield.TextInputLayout>

                </androidx.constraintlayout.widget.ConstraintLayout>

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

        <androidx.appcompat.widget.AppCompatButton
            android:id="@+id/SaveChangesButton"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:layout_marginTop="100dp"
            android:background="@drawable/button"
            android:text="Save changes"
            android:textAllCaps="false"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/deviceList" />

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

有什么解决办法吗?提前致谢!

编辑:

感谢所有投入宝贵时间来解决我的问题的开发人员。我已经通过将代码更改为:

<ScrollView
    android:id="@+id/scrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/view">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="20dp">

            <androidx.cardview.widget.CardView
                android:id="@+id/detailsList"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:elevation="5dp"
                app:cardCornerRadius="5dp"
                android:padding="20dp"
                app:cardUseCompatPadding="true">



                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:padding="20dp">

                    <TextView
                        android:id="@+id/personal_details"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Personal Details"
                        android:textColor="@android:color/black"
                        android:textSize="16sp"
                        android:textStyle="bold"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />

                    <TextView
                        android:id="@+id/username"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="USERNAME"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/personal_details" />

                    <TextView
                        android:id="@+id/edit_username"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_username"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_username"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/username">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditUsernameText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="text" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/email"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="EMAIL ADDRESS"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_username" />

                    <TextView
                        android:id="@+id/edit_email"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_email"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_email"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/email">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditEmailText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="textEmailAddress" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/pw"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="PASSWORD"
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_email" />

                    <TextView
                        android:id="@+id/edit_pw"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_pw"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_pw"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/pw">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditPasswordText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="textPassword"
                            android:text="********" />
                    </com.google.android.material.textfield.TextInputLayout>

                    <TextView
                        android:id="@+id/phone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="PHONE NO."
                        android:textSize="12sp"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textInputLayout_pw" />

                    <TextView
                        android:id="@+id/edit_phone"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:text="Edit"
                        android:textColor="#F49B95"
                        app:layout_constraintBottom_toTopOf="@+id/textInputLayout_phone"
                        app:layout_constraintEnd_toEndOf="parent" />

                    <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/textInputLayout_phone"
                        style="@style/TextInputLayoutOutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        app:boxStrokeColor="@color/mainColor"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/phone">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/EditPhoneText"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:inputType="phone|number"
                            android:maxLength="14" />
                    </com.google.android.material.textfield.TextInputLayout>

                </androidx.constraintlayout.widget.ConstraintLayout>

            </androidx.cardview.widget.CardView>

            <androidx.appcompat.widget.AppCompatButton
                android:id="@+id/SaveChangesButton"
                android:layout_width="200dp"
                style="?android:attr/borderlessButtonStyle"
                android:layout_height="wrap_content"
                android:layout_below="@id/detailsList"
                android:background="@drawable/button"
                android:text="Save changes"
                android:layout_centerInParent="true"
                android:foregroundGravity="center"
                android:textAllCaps="false"
                android:textColor="@android:color/white"
                android:textSize="16sp"
                android:textStyle="bold"
                android:layout_marginTop="30dp"/>
        </RelativeLayout>
</ScrollView>

但是,我仍然不知道为什么这段代码有效。如果有人能解释原因,将不胜感激。

标签: androidscrollview

解决方案


尝试改变

Layout_height : wrap_content

Layout_height: match_parent

在滚动视图标签中


推荐阅读