博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【工具类】Android 最有效的隐藏软键盘方法
阅读量:7197 次
发布时间:2019-06-29

本文共 1682 字,大约阅读时间需要 5 分钟。

原文发表于: , 大家没事可以去逛逛 (ง •̀_•́)ง

前言

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

网上大多数给的方法

public static void hideKeyboard() {    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);    imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}复制代码

而试验结果却是...

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

不过! 解决办法还是有的

我在 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<View> viewList 参数是什么, viewList 中需要放的是当前界面所有触发软键盘弹出的控件。 比如一个登陆界面, 有一个账号输入框和一个密码输入框, 需要隐藏键盘的时候, 就将两个输入框对象放在 viewList 中, 作为参数传到 hideSoftKeyboard 方法中即可。

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

转载于:https://juejin.im/post/58d8ccb45c497d005702dae6

你可能感兴趣的文章
记忆流过 恰似少年
查看>>
【代码】c++堆的简单实现
查看>>
用 jQuery 取得 Div 的宽度与高度(Width, Padding, Border, Margin)
查看>>
rhce 第20题配置iscsi的客户端
查看>>
pdo
查看>>
Apache功能和网站的基础结构
查看>>
java参数传递
查看>>
ubuntu下tomcat监视运行进度方法
查看>>
JavaScript异步编程大冒险: Async/Await
查看>>
Linux启动或禁止SSH用户及IP的登录
查看>>
The entity name must immediately follow the ‘&’ in
查看>>
mysql 行转列
查看>>
交换机划分Vlan配置
查看>>
泛化的自我认知
查看>>
Oracle——事务(Transaction)
查看>>
以poi实现PPT转html
查看>>
TWITTER SDE 电面+ONSITE 面经 助教: 马克助教
查看>>
du命令--disk usage
查看>>
智能合约从入门到精通:Solidity语言的开发规范和开发流程
查看>>
MySQL 主从复制
查看>>