Android.EditText点击时,隐藏系统弹出的键盘,显示出光标
2013-08-28 15:13
696 查看
因为要用自己创建的虚拟大键盘,所以屏蔽系统的键盘,但是在4.1的测试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,但是光标也会隐藏,所以无法使用。
3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现。或者设置editText.setKeyListener(null)来实现.
3.0以上版本除了调用隐藏方法:setShowSoftInputOnFocus(false),由于是系统内部方法。无法直接调用所以采用反射的方式来进行调用,如下
上面反射的方法是从TextView的源码中找到的。因为EditText是继承它的,看网上据说有的sdk里面是"setSoftInputShownOnFocus",反正具体是跟自己的sdk相对应就可以了
if (android.os.Build.VERSION.SDK_INT <= 10) {
mEtInput.setInputType(InputType.TYPE_NULL);
}else {
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class<EditText> cls = EditText.class;
Method setShowSoftInputOnFocus;
setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus",
boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(mEtInput,false);
}catch (Exception e) {
e.printStackTrace();
}
}
3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现。或者设置editText.setKeyListener(null)来实现.
3.0以上版本除了调用隐藏方法:setShowSoftInputOnFocus(false),由于是系统内部方法。无法直接调用所以采用反射的方式来进行调用,如下
Class<EditText> cls = EditText. class ; |
try { |
Method setShowSoftInputOnFocus = cls.getMethod( "setShowSoftInputOnFocus" , boolean. class ); |
setShowSoftInputOnFocus.setAccessible( false ); |
setShowSoftInputOnFocus.invoke(mEtInput, false ); |
} catch (NoSuchMethodException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (IllegalArgumentException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (IllegalAccessException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (InvocationTargetException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
if (android.os.Build.VERSION.SDK_INT <= 10) {
mEtInput.setInputType(InputType.TYPE_NULL);
}else {
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class<EditText> cls = EditText.class;
Method setShowSoftInputOnFocus;
setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus",
boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(mEtInput,false);
}catch (Exception e) {
e.printStackTrace();
}
}
相关文章推荐
- Android.edittext点击时,隐藏系统弹出的键盘,显示出光标
- Android.EditText点击时,隐藏系统弹出的键盘,显示出光标
- android系统中,点击EditText时,隐藏系统软键盘,显示光标
- EditText点击不弹出系统键盘,显示光标
- android系统中,点击EditText时,隐藏系统软键盘,显示光标
- Android 禁止editText弹出软键盘(带光标) 并解决其他editText弹出软键盘后 切换回来 小键盘隐藏
- Android控件 动态初始化 动态加载 EditText显示光标 隐藏键盘
- Android点击EditText文本框之外任何地方隐藏键盘及光标的解决办法
- android制,点击EditText时刻,隐藏系统软键盘,显示光标
- Android EditText显示光标 不弹出键盘
- 1EditText初始不弹出软键盘,只有光标显示,点击再弹出;2android:imeOptions
- Android EditText 反射实现有光标闪,但点击不弹出键盘
- android 隐藏键盘的同时要显示edittext的光标
- Android之怎么隐藏EditText光标和自动显示键盘
- [置顶] android点击屏幕上EditText区域以外的任何地方隐藏键盘的方法
- Android—Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- Android 设置EditText光标显示与隐藏,颜色及粗细
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- EditText初始不弹出软键盘,只有光标显示,点击再弹出