android - 如何在对话框关闭时隐藏键盘

标签 android android-softkeyboard android-keypad

我有一个 Activity,上面有一个 Fragment。 fragment 上有一个 EditText

fragment 一显示,键盘就会弹出,但是我设法在 list android:windowSoftInputMode="stateHidden"中阻止它设置

但是,还有一个按钮,可以打开一个带有另一个 EditText 的对话框。

我有一个方法可以在关闭对话框时自动关闭键盘。

public static void closeInput(final View caller) {      
    caller.post(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) caller.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(caller.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    });
}

这个方法不是一个很好的 hack,它有一些错误。对话框的 EditTextinputType="numberDecimal"closeInput() 似乎没有关闭键盘,只是将其更改为默认的字母顺序状态。

这是怎么回事?

最佳答案

在我的例子中,我使用了方法:

public static void closeInput(final View caller) {  
    caller.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) caller.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(caller.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }, 100);
}

由于 list 中的 Activity 设置,它拒绝正常工作,如果我记得你不能设置 android:windowSoftInputMode="any_of_these"

关于android - 如何在对话框关闭时隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106486/

相关文章:

android - Android 应用程序上的多点触控

android - 在 sqlite (android) 上创建表时收到错误

Android - 如何检测屏幕中显示的软键盘

android - 如何在android中更改自定义键盘的键标签大小

android - 在 android 中打开键盘时如何在 View 中滚动?

android - 在 ScrollView/LinearLayout 的底部放置一个 View

android - ConstraintLayout 截断 TextView 中过长的文本

android - 手势输入是 AOSP LatinIME 的一部分吗?

android - 键盘 - 检测所有语言、更改语言、安装语言

android - 如何在 Android 自定义键盘中添加 shift 键?