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

时间:2013-02-20 15:48:24

标签: android android-edittext textwatcher

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

1 个答案:

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