显示软键盘时如何隐藏页脚按钮?

问题描述 投票:0回答:1

我不知道在显示软键盘时如何隐藏页脚按钮。请帮助我。

[AndroidManifest.xml]

 <activity
                android:name=".presentation.signup.SignUpActivity"
                android:launchMode="singleTop"
                android:screenOrientation="portrait"
                android:windowSoftInputMode="adjustResize" />

[activity_sign_up.xml]

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/layout_sign_up"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/blue_4c_color">

        <!-- toolbar -->
        <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar_sign_up"
                style="@style/toolbarCommonStyle"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

        <!-- toolbar title -->
        <TextView
                android:id="@+id/tv_toolbar_title_sign_up"
                style="@style/toolbarTitleCommonStyle"
                android:text="@string/sign_up"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

        <!-- signup fragment -->
        <FrameLayout
                android:id="@+id/fragment_container_sign_up"
                android:layout_width="0dp"
                android:layout_height="0dp"
                app:layout_constraintBottom_toTopOf="@id/view_footer_sign_up"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/toolbar_sign_up" />

        <!-- footer button -->
        <View
                android:id="@+id/view_footer_sign_up"
                style="@style/footerBgViewStyle"
                android:background="@color/footer_view_sign_up_color"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

        <Button
                android:id="@+id/btn_next_sign_up"
                style="@style/footerBtnStyle"
                android:background="@drawable/shape_square_radius_dark_blue"
                android:text="@string/next"
                app:layout_constraintBottom_toBottomOf="@+id/view_footer_sign_up"
                app:layout_constraintEnd_toEndOf="@+id/view_footer_sign_up"
                app:layout_constraintStart_toStartOf="@+id/view_footer_sign_up"
                app:layout_constraintTop_toTopOf="@+id/view_footer_sign_up" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

[fragment_sign_up_email_password.xml]

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <ScrollView
            android:id="@+id/scrollview_sign_up_email_password"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/layout_sign_up_email_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/blue_4c_color"
                android:focusable="true"
                android:focusableInTouchMode="true">

            <!-- id -->
            <TextView
                    android:id="@+id/tv_title_id_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="16dp"
                    android:layout_marginTop="19dp"
                    android:layout_marginEnd="16dp"
                    android:text="@string/id"
                    android:textAppearance="@style/Font16RegularStyle"
                    android:textColor="@color/white_color"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

            <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/et_id_sign_up"
                    style="@style/editTextCommonStyle"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_marginTop="9dp"
                    android:hint="@string/hint_input_email"
                    android:inputType="textEmailAddress"
                    app:layout_constraintEnd_toStartOf="@id/btn_double_check_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@+id/tv_title_id_sign_up" />

            <Button
                    android:id="@+id/btn_double_check_sign_up"
                    style="@style/elevationCommonStyle"
                    android:layout_width="84dp"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="16dp"
                    android:background="@drawable/shape_btn_sign_up"
                    android:text="@string/double_check"
                    android:textAppearance="@style/Font16RegularStyle"
                    android:textColor="@color/white_color"
                    app:layout_constraintBottom_toBottomOf="@id/et_id_sign_up"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toEndOf="@id/et_id_sign_up"
                    app:layout_constraintTop_toTopOf="@id/et_id_sign_up" />

            <TextView
                    android:id="@+id/tv_notify_id_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="9dp"
                    android:text="@string/notify_sign_up_email"
                    android:textAppearance="@style/Font14RegularStyle"
                    android:textColor="@color/white_80_alpha_color"
                    app:layout_constraintEnd_toEndOf="@id/tv_title_id_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@id/et_id_sign_up" />

            <!-- password -->
            <TextView
                    android:id="@+id/tv_title_password_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="25dp"
                    android:text="@string/password"
                    android:textAppearance="@style/Font16RegularStyle"
                    android:textColor="@color/white_color"
                    app:layout_constraintEnd_toEndOf="@id/tv_title_id_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@id/tv_notify_id_sign_up" />

            <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/et_password_sign_up"
                    style="@style/editTextCommonStyle"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_marginTop="9dp"
                    android:hint="@string/hint_input_password"
                    android:inputType="textPassword"
                    app:layout_constraintEnd_toEndOf="@id/btn_double_check_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_password_sign_up"
                    app:layout_constraintTop_toBottomOf="@+id/tv_title_password_sign_up" />

            <TextView
                    android:id="@+id/tv_notify_password_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="9dp"
                    android:text="@string/notify_sign_up_password"
                    android:textAppearance="@style/Font14RegularStyle"
                    android:textColor="@color/white_80_alpha_color"
                    app:layout_constraintEnd_toEndOf="@id/tv_title_id_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@id/et_password_sign_up" />

            <ImageView
                    android:id="@+id/iv_check_password_sign_up"
                    style="@style/elevationCommonStyle"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_marginEnd="17dp"
                    android:background="@drawable/selector_sign_up_check"
                    app:layout_constraintBottom_toBottomOf="@id/et_password_sign_up"
                    app:layout_constraintEnd_toEndOf="@id/et_password_sign_up"
                    app:layout_constraintTop_toTopOf="@id/et_password_sign_up" />

            <!-- confirm password again  -->
            <TextView
                    android:id="@+id/tv_title_password_again_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="25dp"
                    android:text="@string/password_again"
                    android:textAppearance="@style/Font16RegularStyle"
                    android:textColor="@color/white_color"
                    app:layout_constraintEnd_toEndOf="@id/tv_title_id_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@id/tv_notify_password_sign_up" />

            <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/et_password_again_sign_up"
                    style="@style/editTextCommonStyle"
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:layout_marginTop="9dp"
                    android:hint="@string/hint_input_password"
                    android:inputType="textPassword"
                    app:layout_constraintEnd_toEndOf="@id/btn_double_check_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_password_sign_up"
                    app:layout_constraintTop_toBottomOf="@+id/tv_title_password_again_sign_up" />

            <TextView
                    android:id="@+id/tv_notify_password_again_sign_up"
                    style="@style/excludedPaddingStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="9dp"
                    android:text="@string/notify_sign_up_password_again"
                    android:textAppearance="@style/Font14RegularStyle"
                    android:textColor="@color/white_80_alpha_color"
                    app:layout_constraintEnd_toEndOf="@id/tv_title_id_sign_up"
                    app:layout_constraintStart_toStartOf="@id/tv_title_id_sign_up"
                    app:layout_constraintTop_toBottomOf="@id/et_password_again_sign_up" />

            <ImageView
                    android:id="@+id/iv_check_password_again_sign_up"
                    style="@style/elevationCommonStyle"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_marginEnd="17dp"
                    android:background="@drawable/selector_sign_up_check"
                    app:layout_constraintBottom_toBottomOf="@id/et_password_again_sign_up"
                    app:layout_constraintEnd_toEndOf="@id/et_password_again_sign_up"
                    app:layout_constraintTop_toTopOf="@id/et_password_again_sign_up" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>
</layout>

我想隐藏页脚按钮(activity_sign_up.xml)editText(fragment_sign_up_email_password)具有焦点。

我想让底部按钮在显示软键盘的同时消失。

android android-edittext android-softkeyboard
1个回答
0
投票

您可以使用onGlobalLayoutListener知道何时显示键盘。

 view?.viewTreeObserver?.addOnGlobalLayoutListener {
            val rect = Rect()
            view?.getWindowVisibleDisplayFrame(rect)
            val screenHeight = view?.rootView?.height
            val keypadHeight = screenHeight?.minus(rect.bottom) ?: return

            if (keypadHeight > screenHeight * KEYBOARD_MINIMUM_HEIGHT_PERCENTAGE) {
               //keyboard is shown do what ever you like
                
            } else {
               //keyboard is hidden
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.