Android自定义软键盘 - 如何清除编辑文本(提交文本,...)

时间:2015-10-12 13:10:07

标签: android android-edittext textview android-softkeyboard

我正在关注此示例:https://android.googlesource.com/platform/development/+/master/samples/SoftKeyboard/

添加明文按钮时遇到问题。我想要一个清除焦点文本的按钮。但是由于我重新关注一个非空文本,我不知道如何删除现有的字符。 例如,我有editText A和editText B。

focus A > commit "hello" > focus B > commit "world" > focus A > clear text in A >> FAIL

我仍然可以使用以下方法删除A中的文字:

    //keyEventCode = KeyEvent.KEYCODE_DEL
    getCurrentInputConnection().sendKeyEvent(
            new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
    getCurrentInputConnection().sendKeyEvent(
            new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));

但是由于文本长度未知,因此无法清除文本A.此外,KeyEvent.KEYCODE_CLEAR不适用于上述函数。

任何建议都有帮助,非常感谢。

2 个答案:

答案 0 :(得分:6)

我做了类似的事情:

InputConnection inputConnection = getCurrentInputConnection();

CharSequence currentText = inputConnection.getExtractedText(new ExtractedTextRequest(), 0).text;
CharSequence beforCursorText = inputConnection.getTextBeforeCursor(currentText.length(), 0);
CharSequence afterCursorText = inputConnection.getTextAfterCursor(currentText.length(), 0);
inputConnection.deleteSurroundingText(beforCursorText.length(), afterCursorText.length());

答案 1 :(得分:1)

如何使用getCurrentFocus()简单地检索焦点下的视图(请参阅documentation),然后调用myFocusedEditText.setText("")(我假设您的字段是EditText)?