¿Cómo usar el evento EditText onTextChanged cuando presiono el número?

Hola, tengo EditText con el “texto = 0.00”. cuando presiono el número 3 debería ser como 0.03 y por segunda vez cuando presiono el número 5, el texto debería ser 0.35. Y 35.0, 35.09 así. El EditText inicialmente tiene el valor como 0.00.

Todo esto se hace con el mismo EditText .

¿Cómo logro esto? Lo he intentado con addTextChangedListener() con TextWatcher() .

Has seleccionado el enfoque correcto. Tienes que extender la clase con TextWatcher y sobrescribir afterTextChanged() , beforeTextChanged() , onTextChanged() .

afterTextChanged() escribir la lógica deseada en el método afterTextChanged() para lograr la funcionalidad que necesita.

También puedes probar esto:

 EditText searchTo = (EditText)findViewById(R.id.medittext); searchTo.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { doSomething(); } }); 

Aquí, escribí algo similar a lo que necesitas:

  inputBoxNumberEt.setText(". "); inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length()); inputBoxNumberEt.addTextChangedListener(new TextWatcher() { boolean ignoreChange = false; @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (!ignoreChange) { String string = s.toString(); string = string.replace(".", ""); string = string.replace(" ", ""); if (string.length() == 0) string = ". "; else if (string.length() == 1) string = ". " + string; else if (string.length() == 2) string = "." + string; else if (string.length() > 2) string = string.substring(0, string.length() - 2) + "." + string.substring(string.length() - 2, string.length()); ignoreChange = true; inputBoxNumberEt.setText(string); inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length()); ignoreChange = false; } } });