【问题标题】:How append to textview & remove last letter from textview?如何附加到 textview 并从 textview 中删除最后一个字母?
【发布时间】:2016-02-24 10:57:32
【问题描述】:

我想在android的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);
}

每次我按下一个键时,textview 都会设置一个新字符,而 前一个字符会被覆盖。 此外,如果按下退格键而不是添加的最后一个字符被删除

有没有办法对 textview 做到这一点?

【问题讨论】:

  • 你可以使用 textView.append(character)
  • 感谢赛义德。但是如果我们按退格键,那么我们最近添加的字符不会从 textview 中删除。
  • 你的实际问题是什么......当你按下后没有删除最后一个字符......你还想删除那个。?

标签: android textview


【解决方案1】:

你可以使用

textView.append("" + character);

或者

textView.setText(textView.getText().toString() + character);

这是TextView.append()的文档

它似乎可能会导致您的 TextView() 中出现额外的填充,如 this question 所述(并已修复)。

你可能也想检查一下。

更新

检测退格:

您可能想要添加一些安全检查(如字符串长度和不同的 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);
    }
}

【讨论】:

  • 谢谢。但是如果我们按退格键,那么我们最近添加的字符不会从 textview 中删除。
  • @sakshamagarwal 我建议您调试您的应用程序,但似乎您正在尝试附加退格符
  • @sakshamagarwal 我更新了答案...让我知道它是否有效。
  • @sakshamagarwal 我再次更新了。我测试过,它有效。 KEYCODE_DEL = 67。输入该事件后,字符串被删除。
  • @sakshamagarwal 您在使用软键盘吗?也许,这就是为什么不工作......检查这个问题:stackoverflow.com/questions/4886858/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2012-11-29
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多