Google自带键盘和华为部分手机键盘的del删除键无响应EditText里设置的setOnKeyListener事件的解决方法...

1.自定义KeyDelEditText

  public class KeyDelEditText extends EditText {

    private OnKeyListener mKeyListener;

    public KeyDelEditText(Context context) {
      super(context);
    }

    public KeyDelEditText(Context context, AttributeSet attrs) {
      super(context, attrs);
    }

    public KeyDelEditText(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
    }

    @Override
    public void setOnKeyListener(OnKeyListener l) {
      mKeyListener = l;
      super.setOnKeyListener(l);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
      return new InnerInputConnection(super.onCreateInputConnection(outAttrs), true);
    }

    private class InnerInputConnection extends InputConnectionWrapper {

      public InnerInputConnection(InputConnection target, boolean mutable) {
        super(target, mutable);
      }

      @Override
      public boolean deleteSurroundingText(int beforeLength, int afterLength) {
        boolean ret = false;
        if (beforeLength == 1 && afterLength == 0 && mKeyListener != null) {
          ret = mKeyListener.onKey(KeyDelEditText.this, KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
        }
        return ret || super.deleteSurroundingText(beforeLength, afterLength);
      }
    }

  }

2.替换xml里面的EditText为KeyDelEditText

  <com.suyf.view.KeyDelEditText
    android:id="@+id/et_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

3.正常方式设置setOnKeyListener事件

  EditText etContent = findViewById(R.id.et_content);

  etContent.setOnKeyListener(new View.OnKeyListener() {

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

      if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) {
        //处理具体的删除操作
        return true;
      }
      return false;

    }

  });

和一般的正常情况相比较,修改很少,只需要引入KeyDelEditText这个类,并替换xml文件里面的EditText为KeyDelEditText即可,其他的都不用改动。

转载于:https://www.cnblogs.com/yongfengnice/p/7657222.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值