📜  android 关闭键盘 - Java (1)

📅  最后修改于: 2023-12-03 14:39:09.901000             🧑  作者: Mango

Android 关闭键盘 - Java

在 Android 开发中,有时候我们需要在某些情况下主动关闭键盘。本文将介绍如何使用 Java 代码在 Android 应用中关闭键盘。

1. 关闭软键盘

使用以下方法可以关闭当前已经打开的软键盘:

// 隐藏键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
  • InputMethodManager 是用来管理输入方法的类;
  • getSystemService(Context.INPUT_METHOD_SERVICE) 用于获取 InputMethodManager 实例;
  • view.getWindowToken() 可以获得当前显示的视图的窗口令牌;
  • hideSoftInputFromWindow() 方法将键盘从屏幕上隐藏。

注意:view.getWindowToken() 方法的参数 view 表示当前视图中拥有焦点的控件。

2. 在特定情况下关闭键盘

有时候我们需要在某些特定情况下关闭键盘,例如当用户点击了其他控件或者按下了返回键。可以使用以下代码来监听这些事件并关闭键盘:

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        View view = getCurrentFocus();
        if (view != null && view instanceof EditText) {
            Rect outRect = new Rect();
            view.getGlobalVisibleRect(outRect);
            if (!outRect.contains((int) event.getRawX(), (int) event.getRawY())) {
                view.clearFocus();
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }
    return super.dispatchTouchEvent(event);
}

在上述代码中,我们通过重写 dispatchTouchEvent() 方法来监听触摸事件。当用户触摸屏幕时,我们检查当前焦点控件是否为 EditText(输入框),如果是,则判断触摸事件是否在输入框以外的区域,如果是,则清除焦点并隐藏键盘。

3. 权限配置

在使用键盘关闭功能时,需要在 AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

添加此权限可以让应用使用系统窗口,以允许隐藏键盘。

总结

通过以上介绍,你可以学会如何在 Android 应用中使用 Java 代码关闭键盘。在需要关闭键盘的场景下,你可以根据具体情况选择关闭当前已打开的软键盘,或者在特定事件发生时关闭键盘。快速高效地关闭键盘将提升用户体验,让你的应用更加友好。