在edittext中追加退格

1 android edit append backspace android-edittext

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

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

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

txtMsg.append("C");
Run Code Online (Sandbox Code Playgroud)

我想知道在附加退格时会用什么代替C?请提前帮助谢谢.

Ste*_*eny 13

我不确定你是否还需要这个答案,但我最近和你有同样的需要,我在可编辑的android类型上使用了删除方法:

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());
    }
Run Code Online (Sandbox Code Playgroud)

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

起始位置必须在结束位置之前(我最初意外地犯了这个错误).并且起始位置必须大于或等于零.


gib*_*ffe 5

有一种简单的方法可以通过以下方式做你想做的事:

KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
input.dispatchKeyEvent(event);
Run Code Online (Sandbox Code Playgroud)