Android之EditText禁止回车键换行

最近在做项目的时候,往后台发送数据时报错了,后来发现是因为输入的字符中有换行符导致的,于是就想办法先设置singleLine="true",结果没什么作用,后来查阅edittext的源码,发现其中有一个方法setOnEditorActionListener,这个方法是给文本框添加编辑监听事件,这个看起来没什么用处,但是这个方法有点特别,这个方法的监听时间并不是点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的回车键才会触发。这个时候明白了吧。我们不是要回车键失效吗?现在只需要当我们按回车键的时候返回false就行了,代码如下:

edit.setOnEditorAction(new OnEditorActionListener(){

@override

public boolean onEditorAction(TextView v,int actionId,KeyEvent event){

return(event.getKeyCode() == KeyEvent.KEYCODE_ENTER);

}

});

在这里不知道你们发现问题没,我们的返回结果是true,那么我们为什么要返回true呢?

通过查看源码发现,该方法默认返回的是false,那么Google对该结果是如何规定的呢?在源码最后一行中显示

Returns:Return true if your have consumed the action,else false.

这句话是什么意思呢?

意思就是说如果你要消耗该点击事件的话就返回true,否则返回false。通俗意思就是说返回true代表你已经将该点击事件消化掉了,不会把点击事件产生的结果返回给edittext,而返回false就是代表你没有消耗掉该点击事件,将返回结果传给edittext,然后edittext就会换行了。这种类型的方法有很多,比如事件传递机制TouchEvent等方法。

第二种方法

edit.transformationMethod = SingleLineTransformationMethod.getInstance(),这种方式是通过过滤\n,\r符号来禁止换行。

当然,如果你还有其他的方法欢迎留言分享。


 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值