Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Mascara de telefone

Valeu Galera!!

2012/8/3 Evandro Choma <evandrochoma@gmail.com>
Boa Tarde Marcelo

Você precisa criar uma classe que extende a EditText, e nela faz a máscara dai no XML vc utiliza a classe que criou e não o Edit Text, qualquer campo de máscara será assim.

Segue abaixo a classe que u utilizo aqui.

package br.com.afv.util;

import android.content.Context;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.text.method.NumberKeyListener;
import android.util.AttributeSet;
import android.widget.EditText;

public class PhoneEditText extends EditText {
    private boolean isUpdating;

    private int positioning[] = { 1, 2, 3, 6, 7, 8, 9, 11, 12, 13, 14 };

    public PhoneEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initialize();
    }

    public PhoneEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize();
    }

    public PhoneEditText(Context context) {
        super(context);
        initialize();
    }

    public String getCleanText() {
        String text = PhoneEditText.this.getText().toString();

        text.replaceAll("[^0-9]*", "");
        return text;
    }

    private void initialize() {
        final int maxNumberLength = 10;
        this.setKeyListener(keylistenerNumber);

        this.setText("(  )     -    ");
        this.setSelection(1);

        this.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                String current = s.toString();

                if (isUpdating) {
                    isUpdating = false;
                    return;

                }

                String number = current.replaceAll("[^0-9]*", "");
                if (number.length() > 10)
                    number = number.substring(0, 10);
                int length = number.length();

                String paddedNumber = padNumber(number, maxNumberLength);

                String ddd = paddedNumber.substring(0, 2);
                String part1 = paddedNumber.substring(2, 6);
                String part2 = paddedNumber.substring(6, 10);

                String phone = "(" + ddd + ") " + part1 + "-" + part2;

                isUpdating = true;
                PhoneEditText.this.setText(phone);

                PhoneEditText.this.setSelection(positioning[length]);
            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
        });
    }

    protected String padNumber(String number, int maxLength) {
        String padded = new String(number);
        for (int i = 0; i < maxLength - number.length(); i++)
            padded += " ";
        return padded;
    }

    private final KeylistenerNumber keylistenerNumber = new KeylistenerNumber();

    private class KeylistenerNumber extends NumberKeyListener {

        public int getInputType() {
            return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
        }

        @Override
        protected char[] getAcceptedChars() {
            return new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        }
    }
}


Dai no XML eu uso assim

            <br.com.afv.util.PhoneEditText
                android:id="@+id/telefone"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="70"
                android:inputType="number"
                android:singleLine="true" />

           

Espero ter ajudado.

Abraços


--
[]´s
Evandro Choma
Engenheiro da Computação




Em 3 de agosto de 2012 14:51, Ricardo Morais <ricardo.morais@gmail.com> escreveu:

http://oraculum.blog.br/blogoraculum/index.php/2011/08/28/mascara-de-telefone-br-para-campos-edittext-no-android/ 


2012/8/3 Marcelo Alves <malves.info@gmail.com>
Galera,
  Alguém teria um exemplo da utilização de mascara de telefone no EditText ?

Obrigado,
  Marcelo Alves



--
Ricardo Morais
Flash Developer | .NET Developer




  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário