最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

EditText禁止弹出系统软键盘并正常显示闪烁光标

Android 太平洋学习网 浏览 评论

在Android EditText开发中经常可能需要一些自定义软键盘的功能,并且能够显示EditText闪烁光标,但这个时候又不希望弹出系统软键盘,该怎么办呢?

步骤一:如何显示EditText的闪烁光标呢?

首先我们需要设置EditText为可聚焦状态,并且显示闪烁光标,需要先在XML中添加如下代码:

//设置可获取焦点
android:focusable="true"
android:focusableInTouchMode="true"

//显示闪烁光标,为“@null”表示显示系统默认闪烁光标
android:textCursorDrawable="@null"
android:cursorVisible="true"

步骤二:禁止EditText系统软键盘:

EditText如何禁止系统软键盘呢?错误做法!!!

很多人说直接在代码中添加如下代码来禁止系统键盘,如下所示:

editText.setInputType(InputType.TYPE_NULL);

这种方式是错误的,虽然看起来简单粗暴,但是如果你这样禁止EditText系统软键盘,就会造成EditText无法获取焦点,也就不能显示EditText闪烁光标了。

禁止EditText系统软键盘并使光标正常显示的方法,正确方式!!!

public void disableSoftInput(EditText editText){

	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) {
			// TODO: handle exception
		}

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

上述代码只需要传入要禁止软键盘的EditText对象参数进去即可轻松实现:既能禁止系统软键盘,又能正常显示闪烁光标的问题了。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/1010.html

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论