android隐藏键盘方法,【工具类】Android 最有效的隐藏软键盘方法

前言

在平时的 App 开发中, 免不了会遇到需要开发者隐藏软键盘的情况, 比如当在多个输入框填入个人基本信息, 最后有个保存按钮, 点击即可将个人基本信息保存, 这时就需要开发者编写代码去隐藏软键盘, 而不需要用户自己去手动隐藏, 这样大大提高 App 的用户体验。

网上大多数给的方法

public static void hideKeyboard() {

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

}

而试验结果却是

当软键盘显示了, 调用上述方法确实可以隐藏。 但是当软键盘已经隐藏了, 调用上述方法后又将重新显示。

096226a3ee75

不过! 解决办法还是有的

我在 StackOverflow 中逛了一圈, 最后试验出两个成功的方法, 如下:

public class SoftKeyboardUtil {

/**

* 隐藏软键盘(只适用于Activity,不适用于Fragment)

*/

public static void hideSoftKeyboard(Activity activity) {

View view = activity.getCurrentFocus();

if (view != null) {

InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

}

}

/**

* 隐藏软键盘(可用于Activity,Fragment)

*/

public static void hideSoftKeyboard(Context context, List viewList) {

if (viewList == null) return;

InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);

for (View v : viewList) {

inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

}

}

}

有人可能会问 SoftKeyboardUtil 第二个方法的 List viewList 参数是什么, viewList 中需要放的是当前界面所有触发软键盘弹出的控件。 比如一个登陆界面, 有一个账号输入框和一个密码输入框, 需要隐藏键盘的时候, 就将两个输入框对象放在 viewList 中, 作为参数传到 hideSoftKeyboard 方法中即可。

原理待以后慢慢发掘......

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值