>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Máscaras EditText


Boa Tarde Senhores!

Creio que a minha dúvida deve ser de muitas outras pessoas. Qual a melhor prática para se criar máscaras no Android? Pois encontrei vários códigos pronto na Internet, porém uns bem diferentes dos outros.

Exemplos de máscara:

Placa veículo - XXX-1234 (minha maior dificuldade).
CPF - RG - Telefone - CEP e por ai vai.


Desde já grato.


DEUS SEJA LOUVADO!



4 Respostas


Olá Michael,

Segue um exemplo de uma classe desenvolvida.

Na prática, foi herdado de EditText e feito um novo "componente" a partir da classe.

Classe:


package br.com.rlsystem.clientes.views;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;

public class MyEditText extends android.widget.EditText {

public MyEditText(Context context) {
super(context);
}

public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundColor(Color.RED);

this.setOnKeyListener(new View.OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_DEL) {
return false;
} else {

String valor = ((MyEditText) v).getText().toString();

if (valor.length() == 2) {
((MyEditText) v).setText("("
((MyEditText) v).getText() ") ");
} else if (valor.length() == 9) {
((MyEditText) v).setText(((MyEditText) v).getText()
"-");
}

((MyEditText) v).setSelection(((MyEditText) v).getText()
.length());
return false;
}
}
});
}

public int getIntValue() {
return Integer.parseInt(this.getText().toString());
}

public String changePhone() {
String fone = this.getText().toString();
return "(" fone.substring(0, 2) ") " fone.substring(2, 10);
}

public String getStringValue() {
return this.getText().toString();
}
}


O exemplo da classe é trabalhar com mascara de telefone. Assim, é possível perfeitamente adaptar para outras mascaras.

Para usar ela no seu Layout, ao invez de chamar um EditText, você irá chamar o MyEditText.

Você pode renomear a classe também, por exemplo, PhoneEditText e, a partir dela, criar mais classes, DataEdiText, CPFEditText etc.

Para usar no layout chame ela incluindo o nome do pacote.




Segue o link de como aplicar o XML dessa classe:

http://rlsystem.com.br/forum/disco/uploads/3e2e591e76321a29dda63d7fe3804519-Exemplo-XML.txt




Grato Rafael!

Assim que eu implementar posto o resultado.

Abraço.




Rafael,

Não deu certo, somente o background foi aplicado sem a captura do evento para aplicação da mascara.