最近用到需要自己写一个输入的界面,这就需要隐藏掉系统默认的输入法弹出来了。

要隐藏输入法,有几种方式:

  • 在AndroidManifest中声明Activity的输入模式,详情请看http://blog.csdn.net/u012943767/article/details/48932389
  • 在代码中设置
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    ideSoftInputFromWindow(view.getWindowToken(), 0);
    其中View 为当前获取焦点弹出软件盘的View

上面2中方法只是执行一个就隐藏一次系统的输入法,当EditText获取焦点之后还是会调出来的。但是笔者需要实现的是EditText获取焦点的时候不弹出来,输入的时候也不弹出来,后来发现EditText中有一个方法setShowSoftInputOnFocus 但是该方法是隐藏的。但是该方法实在2.3以后的SDK才出现的,如果要兼容2.3版本,只需要调用:et.setInputType(InputType.TYPE_NULL) ,回到正常情况下,我们需要用到反射来调用setShowSoftInputOnFocus,代码如下:

Class cls = EditText.class;Method setSoftInputShownOnFocus;setSoftInputShownOnFocus = cls.getMethod(methodName,boolean.class);setSoftInputShownOnFocus.setAccessible(true);setSoftInputShownOnFocus.invoke(et, false);

这样就隐藏了,但是EditText的光标还存在,达到了要求,但是笔者满心欢喜跑在真机上面,并没有效果,键盘还是会弹出来,真机是4.0.4,模拟器是4.1.2 ,后来再查资料,才发现4.0 和4.1.2的SDK中该方法名称改了,4.0-4.1.2是用setSoftInputShownOnFocus
4.1.2之后是用setShowSoftInputOnFocus 这两个方法相当相似。

完整的代码如下:

int currentVersion = android.os.Build.VERSION.SDK_INT;            String methodName = null;            if (currentVersion >= 16) {                // 4.1.2                methodName = "setShowSoftInputOnFocus";            } else if (currentVersion >= 14) {                // 4.0                methodName = "setSoftInputShownOnFocus";            }            if (methodName == null) {                et.setInputType(InputType.TYPE_NULL);            } else {                try {                    Class cls = EditText.class;                    Method setSoftInputShownOnFocus;                    setSoftInputShownOnFocus = cls.getMethod(methodName,                            boolean.class);                    setSoftInputShownOnFocus.setAccessible(true);                    setSoftInputShownOnFocus.invoke(et, false);                } catch (Exception e) {                    e.printStackTrace();                }            }

最后完美实现了自定义的输入法。

更多相关文章

  1. 设置android软键盘,默认不弹出的方法
  2. Android(安卓)的回调事件详解
  3. Android(安卓)HAL 开发 (4)
  4. android manager 更新 android的有效方法【更新到 2015-1-18】
  5. Android设置字母大小写
  6. android gallery 竖直(上下)滑动
  7. android service 之一 (start service)
  8. button
  9. Android更新ui 的几种方式?Handler 机制(二)

随机推荐

  1. Switch自定义
  2. Android编译过程详解(三)
  3. Android(安卓)APK安装失败,共享用户不兼容
  4. android从网上加载图片简单示例
  5. android使用adb命令安装软件
  6. Android控件基本属性介绍
  7. android 一些数据转换方法
  8. Android编译过程详解(三)
  9. android 获取设备型号
  10. android文件读取