EditText禁止输入换行符。

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

mEtRemark.setOnEditorActionListener(new TextView.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等方法。

 

参考:https://blog.csdn.net/mirror1217/article/details/60766533

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值