android - 按回隐藏软键盘

标签 android android-edittext android-manifest android-softkeyboard

我在 Activity 中有一个 EditText,我希望它处于 Activity 状态并且在我打开该 Activity 时打开软键盘。这是我的 EditTextxml:

<EditText
    android:background="@null"
    android:cursorVisible="true"
    android:elegantTextHeight="true"
    android:enabled="true"
    android:focusable="true"
    android:hint="Search"
    android:id="@+id/editText11"
    android:inputType="textNoSuggestions|textCapSentences"
    android:layout_centerVertical="true"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:singleLine="true"
    android:textColor="#000000"
    android:textCursorDrawable="@null" />

并且我已将 android:windowSoftInputMode="stateVisible" 用于我拥有此 EditText 的 Activity 。

问题是,当我按一次 back 时,键盘不会隐藏(理想情况下它会在所有其他 EditText 中隐藏)并且当我按 back 再次关闭 Activity。在第一次 back 按下时,我没有在第二次 back 按下时收到对 onBackPressed() 的调用, 我愿意。为什么会出现这种行为,如何解决?

编辑我想要的是,如果键盘打开,按回键应该关闭键盘,如果键盘没有打开,则关闭 Activity 。

最佳答案

试试这个……

创建名为 Util 的类并放入此代码

public static void hideSoftKeyboard(Activity activity) {
    final InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    if (inputMethodManager.isActive()) {
        if (activity.getCurrentFocus() != null) {
            inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
        }
    }
}

并调用Activity的onBackPressed()

关于android - 按回隐藏软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37113535/

相关文章:

android - 从应用程序中以编程方式启用 USB 调试(在设置/应用程序/开发下)

Android: list :$ 符号代表什么?

android - 在 gradle 中声明 android.support.v7.app

java - 屏幕锁定时将 Activity 置顶

android - 哪个是在 Android 按钮上实现操作的最佳方法

java - 对话框和 edittext 监听器 : crash at setEnabled

java - 在不丢失多行功能的情况下为 EditText 设置输入类型?

android - Dx 处理外部库需要永远

java - RGB 到 HEX 转换不正确

android - 添加 play-services-maps 依赖自动添加 glEsVersion 2.0 要求