1

我有一个简单的活动。只有一个编辑文本和一个按钮。在编辑文本中写入一些文本后,如果我按下按钮,我想删除文本的最后一个字符。我试过这样:

String backSpace = txtMsg.getText().toString();
    if(!backSpace.equals(""));
        String mystring=backSpace.substring(0, txtMsg.length()-1)); 
txtMsg.setText("");
txtMsg.append(mystring);

它工作正常,但我想在最后一个位置手动附加退格字符,最后通过移动光标(通过 txtMsg.setSelection())在任何位置附加;就像我们将任何字符附加到文本的末尾一样:

txtMsg.append("C");

我想知道用什么代替 C 来添加退格键?请帮助提前谢谢。

4

3 回答 3

14

我不确定你是否仍然需要这个问题的答案,但我最近和你有同样的需求,我在 Editable android 类型上使用了 delete 方法:

http://developer.android.com/reference/android/text/Editable.html#delete(int,%20int)

我有一个密码 EditText 并在“删除”按钮的单击处理程序中执行了以下操作:

        // delete
    if (m_userPass.getText().length() > 0) {
        m_userPass.getText().delete(m_userPass.getText().length() - 1,
                m_userPass.getText().length());
    }

delete 方法有两个参数,要删除的文本的开始位置和结束位置。在我的示例中,我只是让删除按钮删除最后一个字符(无论光标如何)。如果你想变得更漂亮,你可以输入逻辑来根据光标位置计算出开始和结束位置。

开始位置必须在结束位置之前(我一开始不小心犯了那个错误)。并且起始位置必须大于或等于零。

于 2011-08-01T02:58:58.013 回答
5

有一种简单的方法可以通过以下方式执行您想要的操作:

KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
input.dispatchKeyEvent(event);
于 2012-01-06T18:35:40.907 回答
4

你可以试试这个,它对我有用:

if(!(text.length()==0))
    text.setText(text.getText().delete(text.length() - 1, text.length()));
于 2013-06-02T08:47:10.657 回答