Pessoal, alguem sabe me indicar uma mascara de dinheiro para EditText no Android Studio que funcione bem? Fico no aguardo
Pessoal, alguem sabe me indicar uma mascara de dinheiro para EditText no Android Studio que funcione bem? Fico no aguardo
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.
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) {
}