Android 监听按键信息的时候会出现两次响应的解决办法

最近的项目里面要监听软键盘的Enter的按键信息,如下图,需要在上一行按Enter的时候自动切换到下一行,以此类推。


但是有时候会出现点击一次,响应两次的现象,也就是按一次Enter换两行,经过半天的实践,总结如下:

1.网上说有调用 OnEditorActionListener,而不是OnKeyListener 的方法,经过测试并不能解决问题,http://www.2cto.com/kf/201408/327967.html。估计是因为原文中是监听android:imeOptions="actionSearch"的事件,而我要监听的是Enter事件,可能有区别。

2.还有说法是必须区分对待KeyDown和KeyUp,确实是这样的,因为当我只监听KeyDown事件的时候,响应两次的情况大幅降低了,但是还是偶尔会出现,特别是如果小米手机的输入法中,输入英语,出现待选词的时候,按Enter会直接选中首选词并换行,而且有一定几率换两行。

3.最后的做法是只监听KeyUp事件,完美解决了响应两次的问题。

</pre><pre name="code" class="java">private final OnEditorActionListener onMyEditorActionListener = new OnEditorActionListener() {
		@Override
		public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
			// TODO 自动生成的方法存根
			if (v==mPswText &&event.getKeyCode() == KeyEvent.KEYCODE_ENTER && KeyEvent.ACTION_UP==event.getAction()) {
  				 //TODO what you want to do
  				return true;
  			}
return false;
}
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值