【Android】多个EditText设置其中一个不可编辑并隐藏键盘

原创 2015年11月19日 16:22:37

最近在搞Android开发,慢慢地也记录一些开发中遇到的问题吧。

问题描述:

当界面中有多个EditText时,系统弹出的软键盘的确认键会显示"Next"这样可以方便用户快速进行内容的填写。但是现在的需求是,比如有2个EditText,第2个EditText不允许用户编辑,而是要显示一些hint类的文字上去。当然你可以把第2个EditText换成label,但是我们今天想要解决的是,如何在焦点到第2个EditText的时候把键盘隐掉。

无论是在XML文件中设置focus为false,还是在代码中设置enable为false,都没有办法。似乎只要监测到界面有多个EditText,键盘就会显示NEXT,然后点击NEXT之后,键盘就没办法隐去了。 

所以使用的是一个比较tricky的办法,当EditText获取到焦点事件时,强制隐藏键盘。

先上代码吧:

editText.setOnKeyListener(new OnKeyListener() {
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
					// 隐藏键盘
					InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
					imm.hideSoftInputFromWindow(recharge_money.getWindowToken(), 0);
					return true;
				}
				return false;
			}
		});

editText是我们上面举的例子中的第2个EditText,设置它的OnKeyListener的method,然后当监听到相应的事件时,强制执行隐藏键盘的动作。

之所以说这种方法是比较tricky的办法,因为它有缺陷,比如你的界面中还有多余的EditText,那么当你焦点到第2个时候,键盘就被强制隐去了,用户必须继续手动点击第3个键盘才ok;另外,如果只有2个EditText,在第一个为焦点时,键盘显示的依旧是Next,而不是理想情况下的OK或者GO等内容。

相关文章推荐

设置EditText点击编辑状态后,软键盘把底部的控件顶起来

只需要在AndroidManifest.xml里面对应的activity里面添加一个 android:windowSoftInputMode="adjustResize"的属性就行了...

[android]How to implement an not editable scrollable EditText?(如何实现一个不可编辑的带滚动条的EditText?) .

要显示不可编辑的文字,最简单的方法当然是使用TextView,但有时出于某种原因,可能需要用EditText来显示文字,并且让其不可编辑。EditText本身是没有方法来设置使得其不可编辑的,但方法总...
  • Koupoo
  • Koupoo
  • 2011年12月30日 17:22
  • 532

Android EditText弹出软键盘实现页面标题头不动,软键盘弹出在编辑框下面

为了实现EditText编辑的时候弹出软键盘标题头不动,底部编辑框上移,想了好多种方法,也百度,问同事每种办法都有问题,在这总结一下,希望能帮助到大家。 上图看下效果: 可以看到弹出键盘的...

RxMarkdown 是一个运用 RxJava API 在 TextView 或 EditText 中编辑和(实时)预览基本 markdown 语法的 Android 库

RxMarkdown 是一个运用 RxJava API 在 TextView 或 EditText 中编辑和(实时)预览基本 markdown 语法的 Android 库...

android Fragment获取EditText 从软键盘中输入下一个action的监听

今天是2016年的第2天,还是觉得作为一个程序员,写写博客来回顾自己在开发中遇到的一些问题,对自己来说是一个不错的技术积累方式。这可以让我对所遇到的问题有个更深刻的印象,也能对有遇到相同问题的朋友们能...

android中控制EditText不可编辑的问题

本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。 可能有人会说,设置EditText不可编辑那还不简单,直接设置 Xml代码   ...

Android点击EditText文本框之外任何地方隐藏键盘的解决办法

1,实现方法一:通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 [java] view plain co...

android系统中,点击EditText时,隐藏系统软键盘,显示光标

因为项目中要用自定义的随机键盘,所以必须得屏蔽系统软键盘,但是在4.0的测试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,但是光...

Android点击EditText文本框之外任何地方隐藏键盘的解决办法

1,实现方法一:通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 [java] view plain copy   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android】多个EditText设置其中一个不可编辑并隐藏键盘
举报原因:
原因补充:

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