Android EditText 监听回车键

在Android里面可以通过setOnEditorActionListener监听回车达到屏蔽回车按键的目的。它在API的TextView(EditText的父类),谷歌大意这样描述它:它是一个特殊的监听器,用于监听一个Enter键,如果设备具有物理键盘,点击Enter建不会插入回车符,不过按着alt键可以修复。
好吧,看来这个方法挺古老的,都考虑到物理按键了,不过通过测试如果设备不具有物理键盘,这个方法还是可以屏蔽掉软键盘的回车键的,如果设备具有物理按键就无法屏蔽软键盘的回车键了,哎,一直在找解决方案。
实现setOnEditorActionListener接口的onEditorAction ()这个方法有三个参数:

  1. TextView v 被监听的对象。
  2. int actionId 动作标识符,如果值等于EditorInfo.IME_NULL,则回车键被按下。
  3. KeyEvent event 如果由输入键触发,这是事件;否则,这是空的(比如非输入键触发是空的)。

看一下方法:

  // 监听回车键
        mMuchLineEt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            /**
             *
             * @param v 被监听的对象
             * @param actionId  动作标识符,如果值等于EditorInfo.IME_NULL,则回车键被按下。
             * @param event    如果由输入键触发,这是事件;否则,这是空的(比如非输入键触发是空的)。
             * @return 返回你的动作
             */
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                Log.e("多行监听", actionId + "\t" + KeyEvent.KEYCODE_ENTER);
                return event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER);

            }
        });

可以看到我们对event 进行了非空判断,如果不是用于按键触发的回车,这个值是空的,比如在EditText的属性里加上这句话 android:singleLine=”true”就为空,或者设备带有物料按键它也会报空的,然后通过event.getKeyCode() 获取你按下的键码,和KeyEvent.KEYCODE_ENTER对比可判断你是否点击的回车键。从而达到屏蔽回车按键的目的,不过带有物理键盘的设备就得另说了。
当让也可以这样写:
return actionId == EditorInfo.IME_NULL;
效果是一样的。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值