【Android】全局手写输入导致区域无法点击

场景

现在平板系统基本都配置了全局手写输入功能

在有焦点的控件上,可以直接通过手写笔来替代键盘

但是手写笔有一个问题,就是点击输入框外部无法自动关闭输入状态

这时我们一般会自己去处理触摸事件,来关闭输入状态

一般会调用以下方法

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
  binding.editText.clearFocus()
  InputMethodManager.hideSoftInputFromWindow()
  return super.dispatchTouchEvent(ev)
}
问题

部分系统的手写功能存在BUG,即控件清除焦点后,手写区域仍然会存在

这样点击该区域的按钮,焦点会被手写输入功能,导致按钮无法点击(通过手写笔)

方案

不清除焦点,而是禁用控件

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
  binding.editText.isEnabled = false
  binding.root.post {
    binding.editText.isEnabled = true
  }
  return super.dispatchTouchEvent(ev)
}

如果是在Adapter中,可以禁用后再刷新Adapter,在onBind中重新启用EditText

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值