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 に答える