Android(安卓)EditText 点击时不弹出键盘但显示光标
16lz
2021-01-26
使用editText.setInputType(InputType.TYPE_NULL);可以实现点击EditText时不弹出软键盘,但是4.0之后的版本点击输入框时光标不显示,需要用到一个隐藏方法,这个方法在4.0版本叫setSoftInputShownOnFocus,到4.2又改成了setShowSoftInputOnFocus(坑爹啊这是),写了个方法兼容各个版本,仅供参考。
public void hideSoftInputMethod(EditText ed){ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); int currentVersion = android.os.Build.VERSION.SDK_INT; String methodName = null; if(currentVersion >= 16){ // 4.2 methodName = "setShowSoftInputOnFocus"; } else if(currentVersion >= 14){ // 4.0 methodName = "setSoftInputShownOnFocus"; } if(methodName == null){ ed.setInputType(InputType.TYPE_NULL); } else{ Class cls = EditText.class; Method setShowSoftInputOnFocus; try { setShowSoftInputOnFocus = cls.getMethod(methodName, boolean.class); setShowSoftInputOnFocus.setAccessible(true); setShowSoftInputOnFocus.invoke(ed, false); } catch (NoSuchMethodException e) { ed.setInputType(InputType.TYPE_NULL); e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
更多相关文章
- Android(安卓)版本区别
- 【Android】onInterceptTouchEvent 方法收不到ACTION_MOVE事件
- Android(安卓)Studio常见报错总结
- 查看当前Android版本RemoteViews支持的UI对象
- 使用adb时,为什么只有RockChip的ID需要加入到adb_usb.ini文件里呢
- android开始
- Android获取设备唯一ID的方法
- 快过年了,推荐款好应用
- 生成appcompat_v7(兼容包)并报错的解决方法