VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
在修改交易密码界面用到一个自定义输入框
类似这种(原谅丑了点~)
结果昨天有用户反馈在VIVO手机上回出现,Del键无效的问题~~~
最后发现是:EdiText的OnKeyListener没有响应。
最后搜搜了一下,找到了解决方案:重写EdiTextView的InputConnectionWrapper的方法后解决了问题:
代码如下:
publicclassZanyEditTextextendsEditText{
privateOnDelKeyEventListenerdelKeyEventListener;
publicZanyEditText(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}
publicZanyEditText(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicZanyEditText(Contextcontext){
super(context);
}
@Override
publicInputConnectiononCreateInputConnection(EditorInfooutAttrs){
returnnewZanyInputConnection(super.onCreateInputConnection(outAttrs),
true);
}
privateclassZanyInputConnectionextendsInputConnectionWrapper{
publicZanyInputConnection(InputConnectiontarget,booleanmutable){
super(target,mutable);
}
@Override
publicbooleansendKeyEvent(KeyEventevent){
if(event.getAction()==KeyEvent.ACTION_DOWN
&&event.getKeyCode()==KeyEvent.KEYCODE_DEL){
if(delKeyEventListener!=null){
delKeyEventListener.onDeleteClick();
returntrue;
}
}
returnsuper.sendKeyEvent(event);
}
@Override
publicbooleandeleteSurroundingText(intbeforeLength,intafterLength){
if(beforeLength==1&&afterLength==0){
returnsendKeyEvent(newKeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_DEL))
&&sendKeyEvent(newKeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_DEL));
}
returnsuper.deleteSurroundingText(beforeLength,afterLength);
}
}
/**
*
*功能描述:<br>
*〈功能详细描述〉
*
*@paramdelKeyEventListenerEditText删除回调
*/
publicvoidsetDelKeyEventListener(OnDelKeyEventListenerdelKeyEventListener){
this.delKeyEventListener=delKeyEventListener;
}
publicinterfaceOnDelKeyEventListener{
voidonDeleteClick();
}
}
参考:http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event%22
以上所述是小编给大家介绍的VIVO手机上del键无效OnKeyListener不响应的原因及解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!