我有一个简单的活动。只有一个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的原因是什么?请帮助 提前谢谢。
答案 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()));