Restringindo caracteres digitados no EditText do Android
Desenvolvendo em Android, temos alguns casos em que precisamos restringir os caracteres que são permitidos em campos como o EditText.
Um exemplo, é um campo que aceite valores como 1,80 e 1.80. No caso, se a restrição fosse somente números com . (ponto) como separador decimal, bastaria definir o android:inputType como numberDecimal. Porém, número com , (vírgula) como separador não iriam funcionar.
Para tarefas como essa, o atributo android:digits está aí para salvar a pátria. Basta definir nele quais dígitos serão permitidos naquele EditText e o Android cuida do resto.
Exemplo:
Permitir somente números, tanto com . como , como separadores decimais:
<EditText android:digits="1234567890.," android:layout_width="wrap_content" android:layout_height="wrap_content" />
Fácil, não?
Essa solução também é util para ser usada em conjunto com o android:inputType=”numberDecimal”. Nesse caso, é apresentado o teclado numérico, permitindo que vírgulas também sejam incluídas.
Exemplo:
<EditText android:digits="1234567890.," android:inputType="numberDecimal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Outros exemplos
Números hexadecimais:
<EditText android:digits="abcdef1234567890" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Somente números pares:
<EditText android:digits=02468" android:inputType="number" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Abraço!