1
resposta

Mascara para EditText - Android Studio

Pessoal, alguem sabe me indicar uma mascara de dinheiro para EditText no Android Studio que funcione bem? Fico no aguardo

1 resposta

Olá,

Você precisa de uma mascara durante a digitação em um EditText ou ela deve ser inserida após o texto foco?

Existem alguns modos de realizar esta ação.

  • afterTextChanged(...)
  • beforeTextChanged(...)
  • onTextChanged(...)

Segue uma implementação de uma classe genérica.

import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText;

public abstract class MaskEditUtil {

public static TextWatcher mask(final EditText ediTxt, final String mask) {
    return new TextWatcher() {
        boolean isUpdating;
        String old = "";

        @Override
        public void afterTextChanged(final Editable s) {}

        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {}

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
            final String str = MaskEditUtil.unmask(s.toString());
            String mascara = "";
            if (isUpdating) {
                old = str;
                isUpdating = false;
                return;
            }
            int i = 0;
            for (final char m : mask.toCharArray()) {
                if (m != '#' && str.length() > old.length()) {
                    mascara += m;
                    continue;
                }
                try {
                    mascara += str.charAt(i);
                } catch (final Exception e) {
                    break;
                }
                i++;
            }
            isUpdating = true;
            ediTxt.setText(mascara);
            ediTxt.setSelection(mascara.length());
        }
    };
}

public static String unmask(final String s) {
    return s.replaceAll("[.]", "").replaceAll("[-]", "").replaceAll("[/]", "").replaceAll("[(]", "").replaceAll("[ ]","").replaceAll("[:]", "").replaceAll("[)]", "");
}

}


Activity:

TextView edt= mView.findViewById(R.id.shopin_editText);

TextWatcher mask = MaskEditUtil.mask(edt, "####-####");

    edtToken.addTextChangedListener(mask);

Você também pode editar de forma individual [...]

    edtToken.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {

        }