Как мне скрыть цифровую клавиатуру при нажатии на экран в моем приложении? (Java)

#java #android

#java #Android

Вопрос:

Для ввода EditText установлено значение Phone, а для всего моего макета установлено значение focusable = true

в моей основной деятельности XML

 <RelativeLayout
        android:id="@ id/relSafePassage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/gradient_background"
        android:orientation="vertical"
        android:clickable="true"
        android:focusableInTouchMode="true"
        android:onClick="hideKeyboard"
        android:focusable="true">

<EditText
                android:id="@ id/phoneNum"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:backgroundTint="#000000"
                android:ems="9"
                android:text=""
                android:hint="@string/numHint"
                android:inputType="phone"
                android:numeric="decimal"
                android:maxLength="9"
                android:visibility="visible"

                tools:ignore="Deprecated,TextFields" />
</RelativeLayout>
  

Но когда я нажимаю на свой экран, он заменяет цифровую клавиатуру программной клавиатурой, а не скрывает ее.
Это код Java, который я использовал, чтобы попытаться скрыть клавиатуру:

 public void hideKeyboard(View view) {
        InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
    }
  

Ответ №1:

Попробуйте это:

 public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
  

Комментарии:

1. здравствуйте, я пробовал это, но, похоже, у меня та же проблема. не могли бы вы уточнить, где я мог бы найти представление в activity, чтобы заменить mView? Я все еще новичок в программировании

2. Я просто отредактировал свой ответ, чтобы включить также информацию о представлении. проверьте это.

3. И когда вы вызываете метод hideKeyboard, передайте свой textview в качестве параметра view .

4. спасибо, оказывается, то, что я предположил, что вы подразумевали под моим представлением, было правильным, ваш ответ был правильным, но проблема была в моем XML, который я изменил: android:focusableInTouchMode="true" android:focusable="true" с: android:focusable="false" tools:ignore="KeyboardInaccessibleWidget

5. если ответ вам каким-либо образом помог, было бы неплохо проголосовать или отметить правильный ответ 😉