VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
程序员文章站
2024-02-18 13:13:28
在修改交易密码界面用到一个自定义输入框
类似这种(原谅丑了点~)
结果昨天有用户反馈在vivo手机上回出现,del键无效的问题~~~
最后发现是:editext的on...
在修改交易密码界面用到一个自定义输入框
类似这种(原谅丑了点~)
结果昨天有用户反馈在vivo手机上回出现,del键无效的问题~~~
最后发现是:editext的onkeylistener
没有响应。
最后搜搜了一下,找到了解决方案:重写editextview的inputconnectionwrapper
的方法后解决了问题:
代码如下:
public class zanyedittext extends edittext { private ondelkeyeventlistener delkeyeventlistener; public zanyedittext(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); } public zanyedittext(context context, attributeset attrs) { super(context, attrs); } public zanyedittext(context context) { super(context); } @override public inputconnection oncreateinputconnection(editorinfo outattrs) { return new zanyinputconnection(super.oncreateinputconnection(outattrs), true); } private class zanyinputconnection extends inputconnectionwrapper { public zanyinputconnection(inputconnection target, boolean mutable) { super(target, mutable); } @override public boolean sendkeyevent(keyevent event) { if (event.getaction() == keyevent.action_down && event.getkeycode() == keyevent.keycode_del) { if (delkeyeventlistener != null) { delkeyeventlistener.ondeleteclick(); return true; } } return super.sendkeyevent(event); } @override public boolean deletesurroundingtext(int beforelength, int afterlength) { if (beforelength == 1 && afterlength == 0) { return sendkeyevent(new keyevent(keyevent.action_down, keyevent.keycode_del)) && sendkeyevent(new keyevent(keyevent.action_up, keyevent.keycode_del)); } return super.deletesurroundingtext(beforelength, afterlength); } } /** * * 功能描述: <br> * 〈功能详细描述〉 * * @param delkeyeventlistener edittext删除回调 */ public void setdelkeyeventlistener(ondelkeyeventlistener delkeyeventlistener) { this.delkeyeventlistener = delkeyeventlistener; } public interface ondelkeyeventlistener { void ondeleteclick(); } }
参考:
以上所述是小编给大家介绍的vivo手机上del键无效onkeylistener不响应的原因及解决方法,希望对大家有所帮助
上一篇: Kotlin基础教程之数据类型