Android

您所在的位置:网站首页 安卓thumbdb能不能删除 Android

Android

2023-07-14 07:08| 来源: 网络整理| 查看: 265

转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/37913179

如题目所示,非常诡异的问题,EditText只能输入但是却不能删除!

解决办法参考:http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event

@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) { ClearEditTextView edit = ClearEditTextView.this; String text = edit.getText().toString(); if(text.length() > 0){ String newText = text.substring(0,text.length() - 1); edit.setText(newText); Selection.setSelection(edit.getText(), newText.length()); } return false; } return super.sendKeyEvent(event); } } 原因是:onKeyListener只能监听硬键盘,当发生软键盘事件的时候,会触发sendKeyEvent。

下面还有人补充说,在WebView中使用EditText的时候,也会有问题,还要重写一个deleteSurroundingText()方法:

@Override public boolean deleteSurroundingText(int beforeLength, int afterLength) { // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace if (beforeLength == 1 && afterLength == 0) { // backspace return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); } return super.deleteSurroundingText(beforeLength, afterLength); } 原话:It seems that backspace is not sent by an Android system unless it believes there is some text in the .

参考:http://stackoverflow.com/questions/14560344/android-backspace-in-webview-baseinputconnection

今天才发现,是他妈的在底层注册了OnKeyListener,然后很霸气的直接返回了true。奇葩啊!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3