Android 如何使用textwatcher控制edittext中的文本

Android 如何使用textwatcher控制edittext中的文本,android,android-edittext,textwatcher,Android,Android Edittext,Textwatcher,所以我试图让用户插入一些格式应该是xx.xxxx的文本。为此,我使用textwatcher类。这是我的班级: edittext.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override pu

所以我试图让用户插入一些格式应该是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

您需要使用
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());
          }
    }

当我这样做时,在4.0v或更高版本中,光标停留在“.”之前,在2.2v中工作正常,但在这两种版本中,我都不能删除字符