zoukankan      html  css  js  c++  java
  • android制,点击EditText时刻,隐藏系统软键盘,显示光标

            由于项目中要用自己定义的随机键盘,所以必须得屏蔽系统软键盘,可是在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/


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

  • 相关阅读:
    CSS基础(二)-- CSS选择器之ID选择器
    CSS基础(一)-- CSS的存在形式以及优先级
    HTML--Boby部分之fieldset标签
    HTML--Boby部分之label标签
    HTML--Boby部分之表格
    HTML--Boby部分之<img>标签
    rpm和yum的用法
    网络模型
    内存扩容
    磁盘介绍
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4872453.html
Copyright © 2011-2022 走看看