2011-06-02 66 views
1

我有一个简单的活动。只有一个编辑文本和一个按钮。在编辑文本中写入一些文本后,如果我按下按钮,我想删除文本的最后一个字符。 我已经试过这样:在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

是否'txtMsg.append( '\ B') '做你想做的事? – 2011-06-02 13:09:29

回答

13

我不知道,如果你还需要一个答案或没有,但最近我有同样的需求,因为你和我用的可编辑的Android类型删除methond:

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()); 
    } 

删除方法有两个参数,文本的开始和结束位置删除。在我的例子中,我只是让删除按钮删除最后一个字符(不管光标)。如果你想变得更漂亮,你可以通过逻辑来根据光标位置确定开始和结束位置。

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

4

有做你想要的东西通过一个简单的方法:

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

这也适用于当前的光标位置。不需要更多的代码来检查光标在哪里。谢谢。 – Dimmy3 2014-05-05 11:26:51

4

你可以试试这个,它的工作对我来说:

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