如何附加到textview并删除textview中的最后一个字母?

sak*_*wal 1 android textview

我想在android中的textview中添加文本,但是当按下退格键时,应删除最后一个字符.

  • 我正在使用软键盘.
  • 我正在动态创建textview.
  • 更新的TextView当软键盘的键被分派/压.

这是我的代码:

@Override
public boolean dispatchKeyEvent(KeyEvent KEvent){
     keyaction = KEvent.getAction();

    if(keyaction == KeyEvent.ACTION_DOWN){
         keycode = KEvent.getKeyCode();
         keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() );
         character = (char) keyunicode;
        textView.setText(""+character);
    }
    return super.dispatchKeyEvent(KEvent);
}
Run Code Online (Sandbox Code Playgroud)

每按一次键,textview都会设置一个新字符,前一个 字符会被覆盖.此外,如果按下退格键,则会删除附加的最后一个字符

有没有办法对textview这样做?

W0r*_*0le 5

您可以使用

textView.append("" + character);
Run Code Online (Sandbox Code Playgroud)

要么

textView.setText(textView.getText().toString() + character);
Run Code Online (Sandbox Code Playgroud)

这是TextView.append()的文档

它似乎可能会导致TextView()中的额外填充,如此问题所描述(和修复).

您可能还想检查它.

UPDATE

要检测退格:

您可能想要添加一些安全检查(如字符串长度和不同的null等)

if(keyaction == KeyEvent.ACTION_DOWN){
    if(keycode == KeyEvent.KEYCODE_DEL){
        // Remove last char from string (like backspace would do)
        textView.setText(textView.getText().toString().substring(0, textView.getText().length() - 1));
    } else {
        textView.append("" + character);
    }
}
Run Code Online (Sandbox Code Playgroud)