一、简介

作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘。
使用场景:手机号,固定位数的密码,验证码

二、代码部分

工具类 ViewUtil.java

public class ViewUtil {// 获取编辑框的最大长度,通过反射机制调用隐藏方法public static int getMaxLength(EditText et) {int length = 0;try {InputFilter[] inputFilters = et.getFilters();for (InputFilter filter : inputFilters) {Class<?> c = filter.getClass();if (c.getName().equals("android.text.InputFilter$LengthFilter")) {Field[] f = c.getDeclaredFields();for (Field field : f) {if (field.getName().equals("mMax")) {field.setAccessible(true);length = (Integer) field.get(filter);}}}}} catch (Exception e) {e.printStackTrace();}return length;}public static void hideAllInputMethod(Activity act) {// 从系统服务中获取输入法管理器InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);if (imm.isActive()) { // 软键盘如果已经打开则关闭之imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}}public static void hideOneInputMethod(Activity act, View v) {// 从系统服务中获取输入法管理器InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);// 关闭屏幕上的输入法软键盘imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}

监听器实例:

    // 文本变化监听器private class HideTextWatcher implements TextWatcher {private EditText mView;private int mMaxLength;private CharSequence mStr;HideTextWatcher(EditText v) {super();mView = v;mMaxLength = ViewUtil.getMaxLength(v);}//输入文本前触发@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) { }// 输入文本时触发@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {mStr = s;}// 文本变化后触发@Overridepublic void afterTextChanged(Editable s) {if (mStr == null || mStr.length() == 0)return;// 手机号码输入达到11位,或者密码/验证码输入达到6位,都关闭输入法软键盘if ((mStr.length() == 11 && mMaxLength == 11) || (mStr.length() == 6 && mMaxLength == 6)){ViewUtil.hideOneInputMethod(MainActivity.this, mView);}}}

三、运行展示

Android小技巧 自动关闭输入法软键盘相关推荐

  1. android 输入法 确定按钮,Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究...

    在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听 ...

  2. Android点击空白区域,隐藏输入法软键盘

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击空白区域即可实现隐藏 ...

  3. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击屏幕空白区域即可实现 ...

  4. android 页面默认不弹软键盘_Android 软键盘的全面解析,让你不再怕控件被遮盖!...

    作者 | Vander丶 编辑 | 苏宓 微信公众号 | mobilehub 背景 Android软键盘这块从我入职到现在,是一个一直纠缠我的问题. 从布局挤压,到EditText显示不全,在到弹出时 ...

  5. 安卓输入法弹出后css横屏,mui开发安卓端,输入法软键盘导致css横屏样式判断触发...

    mui开发安卓端,输入法软键盘导致css横屏样式判断触发 mui开发安卓端,输入法软键盘导致css横屏样式判断触发 css 横屏媒体查询 @media screen and (orientation: ...

  6. android 软键盘遮挡登陆按钮的问题,Android优雅的方式解决软键盘遮挡按钮问题

    前言 比如在进行登录的操作中,用户输入完密码之后,肯定是想直接点击登录按钮的.返回键隐藏软键盘这样的体验肯定很糟糕,程序员,遇到问题解决问题. 实现1 xml android:id="@+i ...

  7. android开发隐藏软键盘,Android开发之完全隐藏软键盘的方法

    隐藏软键盘一直是我头痛的事情,没有找到一种真正能隐藏的方法.点击EditText的时候总是弹出软键盘.-----杯具 杯具(一): InputMethodManager im =(InputMetho ...

  8. android 软键盘工具类,Android开发之弹出软键盘工具类简单示例

    本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Co ...

  9. 弹出输入法软键盘,编辑框悬浮,及覆盖遮挡问题的解决

    2015年10月29日 谷歌果然好,一搜就找到清晰答案 软键盘遮挡的四种解决方法 首先效果一:adjustPan 效果二:adjustResize, 实现方法:该activity使用相对布局,自定义一 ...

最新文章

  1. graphpad做折线图后怎么保存_农村的干豆角怎么做的?农村妹子教你两个窍门,保存2年都不会坏...
  2. java017.Set集合
  3. 如何在包下创建子包?
  4. 计算机网络 实验教案,《计算机网络》实验教案.pdf
  5. python傅里叶函数图像_python实现傅里叶级数展开的实现
  6. C#LeetCode刷题-深度优先搜索
  7. Android学习笔记:利用httpclient和AsyncTask 发起网络http post操作
  8. 分布式数据库中间件的实现原理介绍一:分库分表【转】
  9. 睡觉觉睡觉睡觉计算机手机,睡够8小时才算好?科学告诉你,该睡多久!
  10. Atitti 编程语言高级 api 与高级知识 堆栈api 异常api Meta anno注解元数据api Ref 反射api Database meta api 字节码库如果你正在编写一个框架或者
  11. python平稳性检验程序_用Python检验时间序列的平稳性
  12. MySQL分页查询的5种方法
  13. 01- SA8155P QNX LA/LV 启动(01) - startup
  14. QPushButton QTableWidget QComBox属性设置
  15. java sql语句之插入语句的拼接规则
  16. Java中的逻辑运算符/移位运算符简单总结
  17. Powershell 过火绒免杀上线
  18. 18.链表插入——尾插法
  19. 终端设备的物联网控制方案
  20. H5画布绘制透明圆环

热门文章

  1. iPhone12、iPhone12 Pro、iPhone12 Max、iPhone12 Pro Max 详细参数配置
  2. 数据恢复软件从iOS恢复Safari浏览记录
  3. 唯美、清晰的代码长什么样
  4. unity鼠标固定在屏幕中间_unity3D技术之屏幕内跟随鼠标移动
  5. 很酷的瞄准镜样式光标效果
  6. java excel 筛选_Java 在Excel中设置筛选器
  7. python处理excel多重筛选
  8. 怎么识别自己的眼型?眼型图片参照
  9. 机器学习 - 人脸识别
  10. 两向量叉乘的计算公式_高中数学知识背景下对向量叉乘运算的探讨(向东来)