【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等内容。

Android 手动显示和隐藏软键盘 点击空白处隐藏键盘

1、方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(C...
  • a2241076850
  • a2241076850
  • 2017年03月21日 16:25
  • 606

android edittext不可编辑

两种选择: 第一个 不可编辑但是会弹出输入法 android:editable="false"    第二个 不可编辑同时不会弹出输入法 android:focusable=...
  • xjbclz
  • xjbclz
  • 2016年08月09日 22:58
  • 12250

android EditText 的不可编辑可点击

在开发过程中可能很多地方都需要输入 今天为大家整理一下EditText 的样式 很简单  Editext  ...
  • Naide_S
  • Naide_S
  • 2017年06月22日 09:11
  • 359

EditText怎么设置可点击不可编辑

android:clickable="true" android:focusable="false"
  • qq_24334367
  • qq_24334367
  • 2016年08月09日 10:45
  • 3806

Android中EditText实现不可编辑解决办法

android:editable is deprecated: Use an to make it editable android:editable is deprecated: Use inp...
  • vadonmo
  • vadonmo
  • 2015年04月24日 10:41
  • 1852

android学习笔记之通过java源码设置EditText不可编辑状态

在java源码中通过简单方法实现动态控制EditText的可编辑状态。
  • qq12547345
  • qq12547345
  • 2015年08月25日 10:44
  • 769

Android EditText 如何不可编辑又可以响应点击事件

设置EditText不可编辑可能有人会想到用setEnable方法,但是设置了setEnable(false)之后,EditText的点击事件就不可以响应了. 如果我们想让EditText不可编辑又能...
  • github_39630560
  • github_39630560
  • 2017年08月04日 08:51
  • 1052

EditText可编辑状态和不可编辑状态切换 及其它特殊效果

经测试发现,如果EditText预先有内容,光标自然会在文字的末尾,但是如果预先内容为空,然后设置好内容,这种情况下光标自然会在文字的开头,所以这种情况下可以这样做让光标位于末尾: editText...
  • wei_chong_chong
  • wei_chong_chong
  • 2016年05月07日 12:30
  • 828

EditText设置不可编辑,可以复制功能(最简单)

EditText设置不可编辑,可以复制功能(最简单)首先设置不可编辑状态,基本上就是 android:editable="false" 但是我们会发现它已经被废弃了,虽然现在还可以用,但是已经不推荐...
  • u013279665
  • u013279665
  • 2016年08月16日 17:59
  • 2520

Android EditText 不可编辑到可编辑状态改变

android:id="@+id/tv_housename"                 android:layout_width="wrap_content"                ...
  • ding1145536113
  • ding1145536113
  • 2015年10月30日 09:37
  • 515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android】多个EditText设置其中一个不可编辑并隐藏键盘
举报原因:
原因补充:

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