0

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

4

1 回答 1

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());
          }
    }
于 2013-02-20T15:58:29.037 回答