android - 按钮应该粘在底部,带有 adjustResize

标签 android xml android-layout kotlin

我想要一个按钮,当键盘打开时,它应该粘在底部。

具有长格式的线性布局,在垂直方向上包含多个 edittext

按钮在scrollview的底部和外面

list 有一个adjustsize 属性

因此,当我单击任何编辑文本时,按钮 会出现在键盘顶部。

我什至尝试过 android:fitsToSystemWindow=true 但没有任何效果

我想要这样的东西,按钮不会出现在键盘上,按钮也应该粘在底部。我怎样才能做到这一点?

这是我的 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" tools:context=".items.ui.AddEditItemFragment">


    <ScrollView android:id="@+id/sv_add_edit_item" android:layout_width="match_parent"
        android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@+id/btn_save"
        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">

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>


            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>


            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/itemNameInputLayout" android:layout_width="match_parent"
                android:layout_height="wrap_content" android:background="@color/white"
                android:padding="@dimen/default_margin_padding" app:errorEnabled="true"
                app:errorTextAppearance="@style/ErrorText" app:hintTextAppearance="@style/HintText">

                <com.google.android.material.textfield.TextInputEditText
                    style="@style/editTextInputLayout" android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:inputType="textCapWords"
                    android:maxLines="1" />

            </com.google.android.material.textfield.TextInputLayout>


        </LinearLayout>

    </ScrollView>

    <Button android:id="@+id/btn_save" style="@style/buttonThemeColor"
        android:layout_width="match_parent" android:text="@string/save"
        app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

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

Any help will be appreciated

最佳答案

一种方法是添加全局监听器来检测键盘是否显示。然后相应地隐藏/显示您的按钮。

您可以从我的this answer 寻求帮助同样。

关于android - 按钮应该粘在底部,带有 adjustResize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983549/

相关文章:

html - 如何在 HTML 的 div 中显示 XML 代码

c# - 将 DataSet 序列化为 XDocument 空格问题

android - 如何在android中特定位置的ImageView上写TextView?

android - android中android :inputType ="textPassword", "textVisiblePassword","textWebPassword"和 "numberPassword"之间的区别?

Android case语句帮助

android - android芯片 Material 组件顶部和底部的额外空间

android - 我们可以在 Android 中创建自定义 Synthetic Kotlin Extensions 吗?

Android - 允许在设备所有者应用程序中安装非市场应用程序失败

android - 设计开关的样式

android - 如何通过XML启动Language和Input Intent?