在edittext中追加退格

时间:2011-06-02 13:02:56

标签: android append android-edittext edit backspace

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

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的原因是什么?请帮助 提前谢谢。

3 个答案:

答案 0 :(得分: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());
    }

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

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

答案 1 :(得分:5)

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

KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
input.dispatchKeyEvent(event);

答案 2 :(得分:4)

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

if(!(text.length()==0))
    text.setText(text.getText().delete(text.length() - 1, text.length()));