键盘隐藏BottomSheetDialog

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

我正在使用BottomSheetDialog从客户那里获取一些输入,我的视图包含TextInputLayout和TextInputLayout下面的按钮,当用户点击TextInputLayout时,下面的按钮被键盘隐藏,所以我需要键盘上方的那个按钮,尝试了很多可能但是无法修复它。附上关于它的照片。

enter image description here enter image description here

Java文件(活动)代码:

BottomSheetDialog customTipAmountBottomSheetDialog;
private void showCustomTipAmountBottomSheet() {
    customTipAmountBottomSheetDialog = new BottomSheetDialog(OrderActivity.this);
    View customTipAmountBottomSheetView = getLayoutInflater().inflate(R.layout.custom_tip_amount_bottom_sheet, null);
    customTipAmountBottomSheetDialog.setContentView(customTipAmountBottomSheetView);

    InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
    assert imm != null;
    imm.showSoftInput(binding.invoiceDialog.submit, InputMethodManager.RESULT_HIDDEN);

    TextInputLayout customTipAmountBSTIL = customTipAmountBottomSheetView.findViewById(R.id.customTipAmountBSTIL);
    EditText customTipAmountBSET = customTipAmountBottomSheetView.findViewById(R.id.customTipAmountBSET);
    ImageView submit_custom_tip_amount = customTipAmountBottomSheetView.findViewById(R.id.submit_custom_tip_amount);

    submit_custom_tip_amount.setOnClickListener(view -> {
        String amount = customTipAmountBSET.getText().toString();
        if (amount.length() > 0 && Integer.parseInt(amount) > 0) {
            int tipAmount = Integer.parseInt(amount);
            if (tipAmount > 0 && tipAmount < 51) {
                binding.invoiceDialog.customTipAmountTv.setText(tipAmount);
                captainTipAmount = tipAmount;
                customTipAmountBottomSheetDialog.dismiss();
            } else {
                customTipAmountBSTIL.setError("Amount should be less than 50");
            }
        } else {
            customTipAmountBSTIL.setError("Requires a valid amount");
        }
    });

    customTipAmountBottomSheetDialog.show();
}

布局文件custom_tip_amount_bottom_sheet.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
android:layout_height="match_parent">
<TextView
    android:id="@+id/customTipAmountCaptainNameTv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:text="Tip amount for Rapido Captain"
    android:textColor="@color/black"
    android:textSize="16sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<android.support.design.widget.TextInputLayout
    android:id="@+id/customTipAmountBSTIL"
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="8dp"
    android:hint="Enter amount"
    app:boxBackgroundColor="@color/grey_100"
    app:boxCornerRadiusTopEnd="8dp"
    app:boxCornerRadiusTopStart="8dp"
    app:errorEnabled="true"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/customTipAmountCaptainNameTv">

    <EditText
        android:id="@+id/customTipAmountBSET"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:digits="1234567890"
        android:ems="2"
        android:focusable="true"
        android:imeOptions="actionDone"
        android:inputType="phone" />
</android.support.design.widget.TextInputLayout>


<ImageView
    android:id="@+id/submit_custom_tip_amount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="submitFeedbackConfirmationPopUp"
    android:padding="@dimen/margin_8"
    app:layout_constraintBottom_toBottomOf="@+id/customTipAmountBSTIL"
    app:layout_constraintEnd_toEndOf="@+id/customTipAmountBSTIL"
    app:layout_constraintTop_toTopOf="@+id/customTipAmountBSTIL"
    app:srcCompat="@drawable/ic_arrow_forward_black_24dp" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:text="Button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/submit_custom_tip_amount" />

在Manifest文件中的活动文件:

android:windowSoftInputMode="adjustPan"

尝试搜索很多,但仍然无法修复它。我得到了一个与我的问题相关的答案,但它是使用BottomSheetFragment()keyboard hides BottomSheetFragment,但我需要使用BottomSheetDialog。请有人帮我解决这个问题。

让我知道任何其他信息是必需的。

java android alertdialog android-xml bottom-sheet
2个回答
1
投票

在您的activity java类的onCreate()方法中使用以下方法。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

几天前,我遇到了同样的问题。然后将这部分代码用于我的onCreate()方法,然后解决了问题。

样品:

Bottom sheet with adjusting soft keyboard


0
投票

有办法实现这个目标:

1.将以下代码写入<activity>标记下的Android Manifest文件中:

android:windowSoftInputMode="stateHidden|adjustResize"

2.将以下代码写入您的onCreate()活动方法:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

我希望它为你工作。

© www.soinside.com 2019 - 2024. All rights reserved.