所以我试图让用户插入一些格式为xx.xxxx的文本。为此,我正在使用textwatcher类。这是我的班级:
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
EditText edittext = (EditText) findViewById(R.id.my_edit);
if(edittext.getText().length()==2)edittext.setText(edittext.getText().toString()+".");
}
});
所以我基本上只是添加'。'如果编辑后的长度为2.但是在我这样做之后它将光标设置为文本字段的开头,当我尝试删除点时,它只是重新创建它,因为长度再次为2.我知道有一些解决方案但似乎我可以今天弄清楚:S
答案 0 :(得分:0)
您需要使用EditText.append
代替EditText.setText
,并将光标移至edittext:
Override
public void afterTextChanged(Editable s) {
if(edittext.getText().length()==2){
// append dot to edittext
edittext.append(".");
// move cursor at end position in EditText
edittext.setSelection(edittext.getText().length());
}
}