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等方法。

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




你可能感兴趣的:(android常用技巧)