EditText 关于隐藏软键盘.
来源:互联网 发布:catia v5软件有多大 编辑:程序博客网 时间:2024/05/17 04:47
有的时候,我们会接受到一些莫名的需求,比如说自己定制键盘, 计算器等等. 如果我们用EditText的话, 系统会默认弹出软键盘,为了需求需要。 我们需要想尽各种办法 来把系统的软件盘给隐藏掉.
现在网上有很多隐藏软键盘的方法,如下所示:
1, 如果软键盘正在显示,那么调用以下代码就会隐藏, 反之一样.
<span style="font-size:18px;">InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);</span>
2.强制隐藏软键盘.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
3.默认不显示软键盘, 在Activity节点下配置.
Android:windowSoftInputMode="adjustUnspecified|stateHidden"
以上几种方法其实都不是理想状态, 只要你在点击一下EditText, 软键盘还是会弹出来, 下面我会说两种理想状态的实现方式.
1. 设置 editText.setInputType(InputType.TYPE_NULL); 设置后则不会弹出软键盘, 不过唯一不足的是 没有了光标. 只能从前到后依次输入.
2. 用该方法的前提 是版本必须要 >3.0 也就是 sdk 10以上. 否则 就只能使用上面的 TYPE_NULL了, 下面贴代码。
<span style="font-size:18px;">public class NoSoftKbEditText extends EditText {public NoSoftKbEditText(Context context) {super(context);init();}public NoSoftKbEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}public NoSoftKbEditText(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {if (android.os.Build.VERSION.SDK_INT > 10) {// 3.0及其以上Class<EditText> clazz = EditText.class;Method setShowSoftInputOnFocus = null;try { //利用反射获取系统setShowSoftInputOnFocus方法setShowSoftInputOnFocus = clazz.getMethod("setShowSoftInputOnFocus", boolean.class);} catch (Exception e) {try { //出现异常再次获取.setShowSoftInputOnFocus = clazz.getMethod("setSoftInputShownOnFocus", boolean.class);} catch (NoSuchMethodException ex) {}}if (setShowSoftInputOnFocus != null) {setShowSoftInputOnFocus.setAccessible(false);try {setShowSoftInputOnFocus.invoke(this, false); //反射调用该方法 并设置第二参数为false.} catch (Exception e) {this.setInputType(InputType.TYPE_NULL); //出现异常则 设置成没有光标的状态}} else { // 没有获取到方法 则设置成无光标状态.this.setInputType(InputType.TYPE_NULL);}} else {// 3.0以下this.setInputType(InputType.TYPE_NULL);}}}</span>
接下来你只需要把它当成自定义控件一样使用就可以了, 完美解决了不弹出软键盘问题.
这里就不贴下载地址了. 用的话 复制代码即可。
源码地址:传送门, 传送门1
1 0
- EditText 关于隐藏软键盘.
- 关于EditText获取焦点,隐藏软键盘的问题
- 隐藏EditText的软键盘
- EditText 显示隐藏软键盘
- Activity中 EditText 隐藏软键盘
- EditText软键盘的显示和隐藏
- EditText隐藏软键盘的方法
- 点击EditText隐藏软键盘代码
- EditText弹出软键盘,空白处隐藏
- Activity中的EditText默认隐藏软键盘
- Android Edittext 显示隐藏软键盘
- EditText隐藏软键盘的小问题
- EditText光标控制和软键盘隐藏
- EditText默认隐藏软键盘,点击后触发软键盘
- Android关于隐藏软键盘
- EditText 软键盘默认隐藏,点击外部隐藏
- Android EditText设置默认不弹出软键盘,点击EditText外部隐藏软键盘,EditText获取焦点时隐藏hint
- 关于 edittext 软键盘退出监听解决办法
- iOS Objective—C 字符串应用
- POJ 2230 Watchcow(欧拉图)
- iOS简单创建一个Framework文件
- 安卓中hander定时器和timer的简单用法
- 开机启动服务管理 & Startup Applications & boot-up manager & sysv-rc-conf
- EditText 关于隐藏软键盘.
- jdk中用的设计模式
- 使用Gson解析Json得到各种类型的数据
- tweak的例子
- Android中数据持久化的三种方式
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- 微信开放平台注册说明
- Android Stuido Ndk-Jni 开发(四):Jni打包及引用aar
- 20160301--Js01