Android 获取软键盘的删除delete事件

本文探讨如何在Android中捕获软键盘的删除(Delete)事件,指出常见方法仅适用于硬件键盘,并介绍了通过自定义View接收输入法内容的思路。详细解释了输入法事件的工作机制,强调不仅EditText和TextView,View子类也能接收输入,提供了实现步骤和StackOverflow上的相关解决方案链接。
摘要由CSDN通过智能技术生成

对于软键盘删除事件,网上有很多方案是如下,但是 google api也说明了,这个只是监听硬件键盘,对于软键盘并不负责触发(我测试了一下,软键盘能够监听delete键,其他键像数字字母等没有触发这里的监听方法)。

editText.setOnKeyListener(new OnKeyListener() {                 
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        //You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
        if(keyCode == KeyEvent.KEYCODE_DEL) {  
            //this is for backspace
        }
        return false;       
    }
});

当然,也有是通过TextWatcher来处理delete事件,但是这个监听只在数据变化时才触发,如果edittext本身就没有内容,此时点击软件盘delete键也就不会触发这里的方法。

类似于下面的逻辑:

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    mPreviousLength = s.length();
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

@Override
public void afterTextChanged(Editable s) {
    mBackSpace = mPreviousLength > s.length();

    if (mBackSpace) {

        // do your stuff ...

    } 
}


其实对于软件盘的监听,还要从源头找起,这里先介绍一下自定义view输入

Android之自定义View来接收输入法输入的内容

这篇文章转自:http://www.jianshu.com/p/2b483febec72

通过此篇文章,可以了解到输入法的事件工作机制,对于官方的edittext也是类似的原理。

对于很多新人来讲,能接收输入法输入的内容大概只有EditText和TextView这两个控件了,其实不然,只要是View的子类,都可以接收输入法输入的内容。

现在我们一步一步来实现,第一步我们得有一个View的子类。

//首先我们得重写View中的一个方法,返回true,就是让这个View变成文本可编辑的状态,默认返回false。 
@Override public boolean onCheckIsTextEditor() { 
    return true; 
    } 
    //第二个就是重写方法,需要返回一个InputConnect对象,这个是和输入法输入内容的桥梁。
public InputConnection onCreateInputConnection(EditorInfo outAttrs);

// outAttrs就是我们需要设置的输入法的各种类型最重要的就是
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值