首页 > 解决方案 > 有没有办法在 Android 的键盘后面滚动?

问题描述

我的屏幕在出现软键盘时会受到影响,整个白色部分位于ScrollView

在此处输入图像描述

当我在清单中设置windowSoftInputMode为时adjustPan,键盘覆盖了保存按钮,直到键盘折叠才能按下:

在此处输入图像描述

如果我将其设置为adjustResize,则所有视图都被提升为相互重叠: 在此处输入图像描述

在这两种情况下,屏幕都不会滚动。我希望所有视图都保持在其原始位置,但允许用户滚动到键盘后面的底部,直到保存按钮下方的屏幕底部与打开的键盘顶部相邻。这可能吗?

编辑:.xml 布局:

   <ScrollView

        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:fillViewport="true"
>

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

        <LinearLayout

                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                android:orientation="vertical">


            <FrameLayout
                    android:id="@+id/paypalActionBar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    android:background="@color/app_yellow_bold">

                <TextView
                        android:id="@+id/paypalToastContainer"
                        android:tag="paypal"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="top"
                        android:background="@color/onboarding_button_blue"
                        android:elevation="1dp"
                        android:gravity="center"
                        android:orientation="horizontal"
                        android:paddingTop="30dp"
                        android:paddingBottom="5dp"
                        android:visibility="gone"
                        android:text="@string/payout_pay_pal_saved"
                        android:textColor="@color/white"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:visibility="gone">

                </TextView>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:fontFamily="@font/radikal_bold"

                        android:paddingTop="50dp"
                        android:paddingBottom="30dp"
                        android:text="@string/payout_pay_pal_connect_title"
                        android:textColor="@color/black"
                        android:textSize="30sp"/>

                <com.weare8.android.ui.widgets.BackButton
                        android:id="@+id/pp_back"
                        android:layout_width="wrap_content"
                        android:layout_marginTop="20dp"
                        android:layout_height="match_parent"/>
            </FrameLayout>

            <ScrollView android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:fillViewport="true"
                        app:layout_constraintTop_toBottomOf="@+id/paypalActionBar">

                <FrameLayout
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/paypalActionBar" android:id="@+id/frameLayout4">

                    <RelativeLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:paddingLeft="20dp"
                            android:paddingRight="20dp">

                        <androidx.appcompat.widget.AppCompatImageView
                                android:id="@+id/paypal_logo"
                                android:layout_width="252dp"
                                android:layout_height="67dp"
                                android:layout_alignParentStart="true"
                                android:layout_alignParentTop="true"
                                android:layout_marginTop="50dp"
                                android:src="@drawable/paypal_logo"/>

                        <TextView
                                android:id="@+id/paypalDescription"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/paypal_logo"
                                android:layout_marginTop="20dp"
                                android:layout_marginEnd="20dp"
                                android:fontFamily="@font/radikal"
                                android:lineSpacingMultiplier="1.2"
                                android:text="@string/payout_pay_pal_description"
                                android:textColor="@color/app_dark_gray"
                                android:textSize="16sp"/>

                        <TextView
                                android:id="@+id/paypalWarning"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/paypalDescription"
                                android:layout_marginTop="5dp"
                                android:layout_marginEnd="20dp"
                                android:fontFamily="@font/radikal"
                                android:lineSpacingMultiplier="1.2"
                                android:textStyle="italic"
                                android:text="@string/payout_pay_pal_payout_warning"
                                android:textColor="@color/app_light_gray"
                                android:textSize="14sp"/>

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


                            <EditText
                                    android:id="@+id/text_email"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/bg_edit_text"
                                    android:hint="@string/payout_pay_pal_email_hint"
                                    android:elevation="2dp"
                                    android:imeOptions="actionDone"
                                    android:inputType="textEmailAddress"
                                    android:fontFamily="@font/radikal"
                                    android:maxLines="1"
                                    android:layout_marginBottom="15dp"
                                    android:paddingTop="20dp"
                                    android:paddingBottom="20dp"
                                    android:paddingStart="20dp"
                                    android:textColor="@color/black"
                                    android:textSize="16sp"
                                    android:textColorHint="#8A8A8A"/>


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

                                <TextView
                                        android:id="@+id/text_dont_have_account"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_marginStart="5dp"
                                        android:layout_marginEnd="3dp"
                                        android:fontFamily="@font/radikal"
                                        android:text="@string/payout_pay_pal_question"
                                        android:textColor="@color/app_dark_gray"
                                        android:textSize="14sp"/>

                                <TextView
                                        android:id="@+id/text_create_account"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:fontFamily="@font/radikal"
                                        android:textStyle="bold"
                                        android:textColor="@color/button_blue"
                                        android:textSize="14sp"/>


                            </LinearLayout>


                        </LinearLayout>

                    </RelativeLayout>

                    <TextView
                            android:id="@+id/saveButton"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="bottom"
                            android:background="@drawable/bg_button_blue_rounded"
                            android:layout_margin="25dp"
                            android:fontFamily="@font/radikal_bold"
                            android:gravity="center"
                            android:padding="20dp"
                            android:text="@string/payout_pay_pal_save"
                            android:textSize="16sp"
                            android:textColor="@color/white"/>

                </FrameLayout>

            </ScrollView>


        </LinearLayout>


    </androidx.constraintlayout.widget.ConstraintLayout>


</ScrollView>

标签: androidxml

解决方案


如果您想在软键盘打开时滚动和保存按钮也显示在滚动中,那么您应该必须将滚动视图从白色区域移动到视图顶部。

我为你做了一个演示。试试这个。我希望它可能会有所帮助。

<!--If you your scroll view top of the layout it will resolve your problem-->
<ScrollView
    android:id="@+id/scroll_view"
    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"
    >
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        >

        <!--Toolbar demo-->
        <LinearLayout
            android:id="@+id/ll_toolbar"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:background="@color/teal_200"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            />

       
<!--        <ScrollView-->
<!--            android:id="@+id/scroll_view"-->
<!--            android:layout_width="match_parent"-->
<!--            android:layout_height="0dp"-->
<!--            app:layout_constraintStart_toStartOf="parent"-->
<!--            app:layout_constraintEnd_toEndOf="parent"-->
<!--            app:layout_constraintTop_toBottomOf="@+id/ll_toolbar"-->
<!--            >-->

        <!--Your white area of scroll which you want to scroll-->
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/white_portain"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/ll_toolbar"
            >

            <TextView
                android:id="@+id/tv_paypal_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="PayPal"
                android:layout_marginStart="20dp"
                android:layout_marginTop="30dp"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                android:textColor="@color/black"
                android:textSize="35dp"
                />

            <TextView
                android:id="@+id/tv_sub_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Connect your PayPal account to receive \n payments!"
                android:layout_marginStart="20dp"
                android:layout_marginTop="10dp"
                app:layout_constraintStart_toStartOf="parent"
                android:textColor="@color/black"
                android:textSize="18dp"
                app:layout_constraintTop_toBottomOf="@+id/tv_paypal_title"
                />

            <TextView
                android:id="@+id/tv_sub_2_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Please note:You must have a minimum balance of \n$1.00 to make a payout  via PayPal."
                android:layout_marginStart="20dp"
                android:layout_marginTop="10dp"
                app:layout_constraintStart_toStartOf="parent"
                android:textColor="@color/gray_600"
                android:textSize="15dp"
                app:layout_constraintTop_toBottomOf="@+id/tv_sub_title"
                />

            <EditText
                android:id="@+id/edit_email"
                android:layout_width="0dp"
                android:layout_marginTop="10dp"
                android:hint="Enter your email"
                android:paddingStart="10dp"
                android:textColorHint="@color/gray_600"
                android:layout_height="wrap_content"
                android:layout_marginEnd="20dp"
                app:layout_constraintTop_toBottomOf="@+id/tv_sub_2_title"
                app:layout_constraintStart_toStartOf="@+id/tv_sub_title"
                app:layout_constraintEnd_toEndOf="parent"
                />


            <TextView
                android:id="@+id/tv_create_one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Dont have a PayPal account?"
                android:layout_marginStart="20dp"
                android:layout_marginTop="10dp"
                app:layout_constraintStart_toStartOf="@+id/edit_email"
                android:textColor="@color/gray_600"
                android:textSize="15dp"
                app:layout_constraintTop_toBottomOf="@+id/edit_email"
                />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Save"
                android:layout_marginTop="160dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tv_create_one" />

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


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

我遵循您的布局并尝试修复它。现在它可以按您的意愿工作了。如果您对此布局有任何问题,那么我很乐意为您提供进一步帮助

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

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

        <LinearLayout
            android:id="@+id/ll_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:orientation="vertical">


            <FrameLayout
                android:id="@+id/paypalActionBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                android:background="@color/teal_200">

                <TextView
                    android:id="@+id/paypalToastContainer"
                    android:tag="paypal"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top"
                    android:background="@color/black"
                    android:elevation="1dp"
                    android:gravity="center"
                    android:orientation="horizontal"
                    android:paddingTop="30dp"
                    android:paddingBottom="5dp"
                    android:visibility="gone"
                    android:text="@string/payout_pay_pal_saved"
                    android:textColor="@color/white"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:visibility="gone">

                </TextView>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:paddingTop="50dp"
                    android:paddingBottom="30dp"
                    android:text="@string/payout_pay_pal_connect_title"
                    android:textColor="@color/black"
                    android:textSize="30sp"/>

                <ImageView
                    android:id="@+id/pp_back"
                    android:background="@drawable/ic_launcher_background"
                    android:layout_width="wrap_content"
                    android:layout_marginTop="20dp"
                    android:layout_height="match_parent"/>
            </FrameLayout>
        </LinearLayout>

<!--            <ScrollView android:layout_width="match_parent"-->
<!--                android:layout_height="match_parent"-->
<!--                android:fillViewport="true"-->
<!--                app:layout_constraintTop_toBottomOf="@+id/paypalActionBar">-->

                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/ll_toolbar"
                    android:id="@+id/frameLayout4">

<!--                    <RelativeLayout-->
<!--                        android:layout_width="match_parent"-->
<!--                        android:layout_height="match_parent"-->
<!--                        android:paddingLeft="20dp"-->
<!--                        android:paddingRight="20dp">-->

                        <androidx.appcompat.widget.AppCompatImageView
                            android:id="@+id/paypal_logo"
                            android:layout_width="252dp"
                            android:layout_height="67dp"
                            android:layout_marginStart="20dp"
                            android:layout_marginTop="30dp"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            android:background="@color/gray_600"/>

                        <TextView
                            android:id="@+id/paypalDescription"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/paypal_logo"
                            android:layout_marginTop="20dp"
                            android:layout_marginEnd="20dp"
                            app:layout_constraintTop_toBottomOf="@+id/paypal_logo"
                            app:layout_constraintStart_toStartOf="@+id/paypal_logo"
                            android:lineSpacingMultiplier="1.2"
                            android:text="@string/payout_pay_pal_description"
                            android:textColor="@color/gray_600"
                            android:textSize="16sp"/>

                        <TextView
                            android:id="@+id/paypalWarning"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/paypalDescription"
                            app:layout_constraintTop_toBottomOf="@+id/paypalDescription"
                            app:layout_constraintStart_toStartOf="@+id/paypalDescription"
                            android:layout_marginTop="5dp"
                            android:layout_marginEnd="20dp"
                            android:lineSpacingMultiplier="1.2"
                            android:textStyle="italic"
                            android:text="@string/payout_pay_pal_payout_warning"
                            android:textColor="@color/gray_600"
                            android:textSize="14sp"/>

                        <LinearLayout
                            android:id="@+id/ll_edittext"
                            app:layout_constraintTop_toBottomOf="@+id/paypalWarning"
                            app:layout_constraintStart_toStartOf="@+id/paypalDescription"
                            android:layout_width="match_parent"
                            android:layout_height="0dp"
                            android:layout_centerInParent="true"
                            android:orientation="vertical"
                            >


                            <EditText
                                android:id="@+id/text_email"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:hint="@string/payout_pay_pal_email_hint"
                                android:elevation="2dp"
                                android:imeOptions="actionDone"
                                android:inputType="textEmailAddress"
                                android:maxLines="1"
                                android:layout_marginBottom="15dp"
                                android:paddingTop="20dp"
                                android:paddingBottom="20dp"
                                android:paddingStart="20dp"
                                android:textColor="@color/black"
                                android:textSize="16sp"
                                android:textColorHint="#8A8A8A"/>


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

                                <TextView
                                    android:id="@+id/text_dont_have_account"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginStart="5dp"
                                    android:layout_marginEnd="3dp"
                                    android:text="@string/payout_pay_pal_question"
                                    android:textColor="@color/black"
                                    android:textSize="14sp"/>

                                <TextView
                                    android:id="@+id/text_create_account"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:textStyle="bold"
                                    android:text="asd"
                                    android:textColor="@color/purple_700"
                                    android:textSize="14sp"/>


                            </LinearLayout>


                        </LinearLayout>

<!--                    </RelativeLayout>-->

                    <View
                        android:id="@+id/spacing"
                        android:layout_width="match_parent"
                        android:layout_height="100dp"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/ll_edittext"
                        />

                    <TextView
                        android:id="@+id/saveButton"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="bottom"
                        android:layout_margin="25dp"
                        android:background="@color/teal_200"
                        android:gravity="center"
                        android:padding="20dp"
                        android:text="@string/payout_pay_pal_save"
                        android:textColor="@color/white"
                        android:textSize="16sp"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/spacing"
                       />

                </androidx.constraintlayout.widget.ConstraintLayout>

<!--            </ScrollView>-->




    </androidx.constraintlayout.widget.ConstraintLayout>


</ScrollView>

推荐阅读