Android之禁止Edittext弹出软键盘并且使光标正常显示

原创 2016年05月31日 00:06:58

如图:当使用EditText输入框时,总会自动弹出系统自带键盘。很多时候我们需要的是根据自定义控件输入改写输入框内容,因为需要把自带键盘屏蔽。




网上很多屏蔽系统键盘的方法无非是以下几种:

方法一:
  在 AndroidMainfest.xml中选择activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden

   < activity android:name=".Main"
      android:label="@string/app_name"
      android:windowSoftInputMode="adjustUnspecified|stateHidden" />
  
方法二:
  让 EditText失去焦点,使用EditText的clearFocus方法
      EditText edit=(EditText)findViewById(R.id.edit);
  edit.clearFocus();

方法三:
  强制隐藏Android输入法窗口
    例如:
    EditText edit=(EditText)findViewById(R.id.edit);
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

经过实验,均无法实现需求效果。


解决方法很简单,代码如下:

        /**
	 * 禁止Edittext弹出软件盘,光标依然正常显示。
	 */
	public void disableShowSoftInput() {
		if (android.os.Build.VERSION.SDK_INT <= 10) {
			editText.setInputType(InputType.TYPE_NULL);
		} else {
			Class<EditText> cls = EditText.class;
			Method method;
			try {
				method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
				method.setAccessible(true);
				method.invoke(editText, false);
			} catch (Exception e) {
			}

			try {
				method = cls.getMethod("setSoftInputShownOnFocus", boolean.class);
				method.setAccessible(true);
				method.invoke(editText, false);
			} catch (Exception e) {
			}
		}
	}






版权声明:本文为博主原创文章,未经博主允许不得转载。

android-禁止EditText自动弹出键盘

在onCreate中加上: getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_H...
  • xcmax
  • xcmax
  • 2015年01月27日 12:58
  • 314

Android 禁止Edittext弹出系统软键盘 的几种方法

第一种方法:在XML文件下添加: android:focusable="true"    android:focusableInTouchMode="true" 第二种方法:直接关闭输入法...
  • sinat_27672523
  • sinat_27672523
  • 2017年02月24日 14:14
  • 7717

解决点击EditText不弹出键盘,但现实光标闪烁的问题

好长时间没写博客了,其实博客这个东西有点过时了,说实话,但是先写一段时间把!下一篇写一下这段时间的新的和感悟, 解决点击EditText不弹出软键盘,但实现光标闪烁的问题。 写之前先吐槽一下CSD...
  • gzd1995
  • gzd1995
  • 2017年09月01日 17:11
  • 828

Android edittext使用自定义键盘时禁用系统软键盘但却不禁用光标

Android edittext使用自定义键盘时禁用系统软键盘但却不禁用光标
  • jw20082009jw
  • jw20082009jw
  • 2015年03月11日 19:50
  • 2455

Android EditText 反射实现有光标闪,但点击不弹出键盘

随着Android发展,版本更新,目前通过方法setInputType(InputType.TYPE_NULL);
  • hhfhhy
  • hhfhhy
  • 2014年05月13日 11:30
  • 871

android屏蔽软键盘并且显示光标

之前在工作过程中想做到屏蔽EditText的软键盘并且显示光标的效果,网上很多资料都不能完全满足要求,大部分都是启动Activity的时候不弹出软键盘,当点击EditText时还是会弹出软键盘。当让还...
  • h072056218
  • h072056218
  • 2016年01月05日 12:39
  • 393

Android 禁止软键盘自动弹出

Android系统对EditText这个控件有监听功能,如果某个Activity中含有该控件,就会自动弹出软键盘让你输入,这个看似人性化的方案有时候并不被用户喜欢的,所以在有些情况下要禁用该功能。这几...
  • playboyanta123
  • playboyanta123
  • 2013年03月14日 19:13
  • 16937

EditText点击不弹出系统键盘,显示光标

// 隐藏系统键盘 public void hideSoftInputMethod(EditText ed){ getWindow().setSoftInputMode(Win...
  • u012390044
  • u012390044
  • 2016年04月20日 14:01
  • 826

Android EditText 禁止软键盘弹出

Activity中的编辑框会默认获得焦点,而弹出软键盘,如果不想让显示Activity时,自动弹出软键盘,有如下两个方式 方式1: android:windowSoftInputM...
  • Caesardadi
  • Caesardadi
  • 2013年10月14日 18:08
  • 12503

【笔记】Edittext禁用软键盘,但不影响其他功能

最近遇到一个需求,就是需要禁用Edittext的软键盘弹出,但是又不能影响,光标显示和复制粘贴功能。 一般情况下,禁用软件盘的话,只要在Edittext的XML布局文件中加入 android:focu...
  • lantesi
  • lantesi
  • 2015年07月10日 11:25
  • 441
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android之禁止Edittext弹出软键盘并且使光标正常显示
举报原因:
原因补充:

(最多只允许输入30个字)