由于项目中要用自己定义的随机键盘,所以必须得屏蔽系统软键盘,可是在4.0的測试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,可是光标也会隐藏,所以无法使用。

3.0下面版本号能够用editText.setInputType(InputType.TYPE_NULL)来实现。或者设置editText.setKeyListener(null)来实现。

3.0以上版本号除了调用隐藏方法setShowSoftInputOnFocus(false)。因为是系统内部方法,无法直接调用所以採用反射的方式来进行调用,例如以下

在项目中(当前项目使用的是android4.0):

int SDK_INT = android.os.Build.VERSION.SDK_INT;
if (SDK_INT <= 10) {
// 点击EditText,屏蔽默认输入法
editText.setInputType(InputType.TYPE_NULL); // editText是声明的输入文本框。 } else {
// 点击EditText,隐藏系统输入法
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class<EditText> cls = EditText.class;
Method method = cls.getMethod("setShowSoftInputOnFocus",
boolean.class);// 4.0的是setShowSoftInputOnFocus,4.2的是setSoftInputShownOnFocus
method.setAccessible(false);
method.invoke(editText, false); // editText是声明的输入文本框。
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}

注:

上面反射的方法是从TextView的源代码中找到的。由于EditText是继承TextView,看网上据说有的sdk里面是"setSoftInputShownOnFocus"。反正详细是跟自己的sdk相相应就能够了。4.0系统相应设置的是setShowSoftInputOnFocus,4.2系统相应设置的是setSoftInputShownOnFocus,这两个版本号的都測试过了,是正确可用的。

參考:

Android自己定义软键盘的实现

android自己定义软键盘

Android.edittext点击时,隐藏系统弹出的键盘,显示出光标


http://blog.163.com/zhaoliping0736@126/blog/static/5550761120149684736794/

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. JS 对数组的常用处理
  2. 用StackExchange.Redis客户端连接阿里云Redis服务遇到的问题
  3. Java 项目JDBC 链接数据库中会出现的错误
  4. C#~异步编程续~.net4.5主推的await&amp;async应用(转)
  5. 在ASP.NET 5中如何方便的添加前端库
  6. html button自动提交表单问题
  7. 杭电oj1062 Text Reverse
  8. MVC中Json的使用:Controller中Json的处理【转】
  9. AppStore被拒原因及总结
  10. j2se 总结
  11. cmd第一次推送github
  12. ionic2 安装(一)
  13. JSON.stringify()和JSON.parse()的作用
  14. ubuntu14.04, Cloudera Manager 5.11.1, cdh5.11.1 postgresql离线部署
  15. 用jq修改css
  16. RMI 、RPC和SOAP
  17. springMVC加载远程freemarker模板文件
  18. Intent传递数据全解
  19. Debian 8 时间同步
  20. Pyspark访问Hbase

热门文章

  1. css结构设计思想
  2. ehcache、memcache、redis三大缓存比较(转)
  3. uva 10710 - Chinese Shuffle(完美洗牌)
  4. 5DXTPlayer串口调试小结
  5. 闪回drop恢复表后sql运行计划异常
  6. Html表单中遇到的问题
  7. Android MediaScanner使用简单介绍
  8. 我眼中的c++编程总结-20150602
  9. acdream 1430 SETI 后缀数组+height分组
  10. Android JNI编程(七)——使用AndroidStudio编写第一个JNI程序