Android:点击软键盘外自动隐藏输入法

需积分: 10 14 下载量 186 浏览量 更新于2024-09-09 收藏 1KB TXT 举报
"该资源提供了一种在Android应用中实现点击软键盘外部自动隐藏软键盘的方法,通过在BaseActivity中添加代码,使得全应用范围内的点击键盘外的任何区域都能够触发软键盘的隐藏。" 在Android开发中,有时我们需要用户在输入时能够方便地隐藏软键盘,特别是在使用自定义底部导航栏或对话框时。这段代码提供了一个解决方案,它通过覆写`BaseActivity`的`dispatchTouchEvent`方法来实现这一功能。 首先,我们关注`dispatchTouchEvent`方法中的关键部分: 1. 当接收到`ACTION_DOWN`事件时(即用户触摸屏幕时),首先获取当前获得焦点的视图,通常是一个`EditText`,然后判断是否应该隐藏输入法。这是通过调用`isShouldHideInput`方法完成的。 2. `isShouldHideInput`方法接收两个参数,一个是当前焦点视图`v`,另一个是触摸事件`event`。方法内部计算`EditText`在窗口中的位置,并与触摸事件的位置进行比较。如果触摸点位于`EditText`的边界内,则返回`false`,表示不应该隐藏输入法;否则,返回`true`,表示应该隐藏。 3. 如果`isShouldHideInput`返回`true`,则调用`InputMethodManager`的`hideSoftInputFromWindow`方法,传入`v.getWindowToken()`和0作为参数,这将隐藏与`v`关联的软键盘。 4. 最后,`dispatchTouchEvent`方法会继续分发触摸事件给父窗口,以便其他视图可以处理它,同时也调用`onTouchEvent`方法。 通过这种方式,用户在输入时,一旦点击键盘之外的任何地方,软键盘都会自动收起,提高了用户体验。这种方法适用于全局应用,只需要在应用的基类`Activity`中实现,即可在整个应用范围内生效。需要注意的是,这种方法可能会影响到其他需要键盘显示的场景,因此在特定情况下可能需要进行额外的判断或优化。