Ver mensagens sem resposta | Ver tópicos ativos Hoje é 20 Jun 2013, 05:08



Responder Tópico  [ 6 Mensagens ] 
 EditText personalizado para números com 2 digitos 
Autor Mensagem
What is ADT?
What is ADT?

Data de registro: 11 Mai 2010, 17:46
Mensagens: 29
Mensagem EditText personalizado para números com 2 digitos
Pessoal, fiz uma classe que recebe números decimais com no máximo 2 digitos!!
Espero ajudar o pessoal que sofrer este problema... não sei se é a melhor solução, mas fica a dica!

package br.tcc.minhasContas.edittext2;

import java.util.StringTokenizer;

import br.tcc.minhasContas.Inicio;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;

public class EditText2D extends EditText implements OnKeyListener {

    public EditText2D(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        this.setOnKeyListener(this);
    }

    public EditText2D(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        this.setOnKeyListener(this);
    }

    public EditText2D(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        this.setOnKeyListener(this);
    }

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent keyevent) {
        if (keyevent.getAction() == KeyEvent.ACTION_DOWN) {
            return false;
        }

        String valor = getText().toString().toLowerCase();
        if (valor.contains(".")) {
            StringTokenizer aux = new StringTokenizer(valor, ".");
            String part1 = aux.nextToken();
            if (aux.hasMoreTokens()) {
                String part2 = aux.nextToken();
                if (part2.length() > 2) {
                      setTextKeepState(part1 + "." + part2.substring(0, 2));                   
                }
            }
        }

        return false;
    }
}
 

<br.tcc.minhasContas.edittext2.EditText2D
        android:id="@+id/campoValor" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:numeric="decimal" />


08 Abr 2011, 00:11
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 25 Nov 2011, 15:17
Mensagens: 158
Localização: Florianópolis
Mensagem Re: EditText personalizado para números com 2 digitos
desculpa a ignorância, mas como chamo este método? queria criar um para Data. dd/mm/yyyy vi na pagina http://groups.google.com/group/androidb ... 4f65e02f8d

um mas não sei o que está acontecendo que quando faço um a primeira data ( data inicial ou final) funciona, dai chega na segunda e não mascara mais....

obrigado pela ajuda.

_________________
--
Att,
Leandro


02 Fev 2012, 17:17
Perfil
What is ADT?
What is ADT?

Data de registro: 11 Mai 2010, 17:46
Mensagens: 29
Mensagem Re: EditText personalizado para números com 2 digitos
Como chama qual método ?
O método onKey é chamado pelo sistema depois que o usuário escreve alguma coisa, no caso você pode usar o debug para verificar o que está acontecendo.
:)


06 Fev 2012, 10:04
Perfil
Android application
Android application

Data de registro: 14 Out 2011, 16:02
Mensagens: 88
Mensagem Re: EditText personalizado para números com 2 digitos
Muito Obrigada felipe.far!
Eu realmente estava procurando algo desse tipo,
só que não havia encontrado um exemplo que desse certo!
/uu
_____________________________________________________________________________

Imc275, eu testei a máscara do link que você passou e deu certo no meu projeto.
Eu coloquei o seguinte código no onCreate:

        EditText dtIni = (EditText) findViewById(R.id.dt_inicio);

        EditText dtEnd = (EditText) findViewById(R.id.dt_termino);


        dtIni.setOnKeyListener(new DateTimeMask());


        dtEnd.setOnKeyListener(new DateTimeMask());

        }


    class DateTimeMask implements OnKeyListener {

         @Override


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

        EditText ed = (EditText) v;


        if (event.getAction() == KeyEvent.ACTION_UP


        && keyCode != KeyEvent.KEYCODE_DEL) {


        int length = ed.getText().toString().length();


        switch (length) {


        case 2: {


        ed.setTextKeepState(ed.getText() + "/");


        break;



        }


        case 5: {

        ed.setTextKeepState(ed.getText() + "/");


        break;



        }

        default:

        break;



        }
        }
 

        Selection.setSelection(ed.getText(), ed.getText().toString()


        .length());


        return false;



        }


     }


Tirei a parte da máscara para hora (já que eu queria somente para data) e funcionou!


06 Fev 2012, 14:50
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 25 Nov 2011, 15:17
Mensagens: 158
Localização: Florianópolis
Mensagem Re: EditText personalizado para números com 2 digitos
Sim felipe.far, como eu passarei os parâmetros para estas classes?
para que serve isso? "AttributeSet attrs"


AleSR, Oi tentei fazer isso mas não consegui, ficou iguai, quando rodo sempre consigo colocar um dos campos certos, no outro não formata. muito estranho...

_________________
--
Att,
Leandro


08 Fev 2012, 14:25
Perfil
What is ADT?
What is ADT?

Data de registro: 11 Mai 2010, 17:46
Mensagens: 29
Mensagem Re: EditText personalizado para números com 2 digitos
Esta classe que eu criei extends a EditText e você não precisa fazer nada no momento que o sistema constroi ele, simplesmente repassa para chamar o super e seta o onkeylistener(this) que é a classe que vc criou.
Então como vc implementou onKeyListener, sempre que o usuário pressionar algum botão, o método onKey será chamado,
Entendeu ???
Como eu a classe extend EditText, esta classe pai tem o método getText que representa o componente na tela
então quando vc faz:

String valor = getText().toString();


Você recupera o valor que o cara digitou na tela, como eu quero só os digitos,
quando o cara coloca 10,305 ele verifica que tem 3 digitos depois do ponto e remove o terceiro digito atualizando o valor da tela deste modo:
setTextKeepState(part1 + "." + part2.substring(0, 2));  


Conseguiu entender ?


09 Fev 2012, 07:31
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 6 Mensagens ] 

Quem está online

Usuários vendo este fórum: alansousa, albinoneto, Alessandro Tavares, Alex Marcelo Burnett, alexandreizumi, alexvbh, alineri, aluclinux, anaguerra, andi, Andre, andrewort, Bitor, bomcabelo, brcamp, brenno, brian15, BTalhadas, btleandro, caciara, Cajux, Carlos, Carlos Alexandre, carlos.macleod, cassiano, cehills, celson, cenatech, Chewbacca, Christiane, CKorneLL, Clauber, claudio, cleiton_maciel, cosmotheoro, deborazb, diegorrborges, difrene, Douglas Siviotti, ederson_4, Eduardo, eferrari, emersonbarros, Faroli, Felipe Ferreira, FelipeOliveira, Filipe larizzatti, flashking, Flávio Robertgo, fraga, francismarconcini, free_w3000, freina, furlanrapha, gabrielpg, geco, germanno, GuilhermeZampieri, hellbest, Heritrix, hugomarinho, Igor_M, ismavolk, Juninhooooo, Katia, kecyobarros, Ki-Adi-Mundi, kleberperea, konos, kpinheiro, leandroviana, leoadias, Leonardo, LForce, Lindberg, loferreira, LordElfo, luizfilipe, marcelosv, marianatallas, Marini, marlovich, Michel, miguel, mikasjau, MSN NewsBlogs, mtomazzi, Mvitor, navegador, nishimura.ichigo, nivea, onaiggac, osternack, otpor, Paulo Bizzo, paulokiller, paulosantos, pemam.com.br, pmzara, pyrobit, r.wil, rafaelvital, rdchaves, regisjj, retardad0, rixargolo, ROGÉRIO RODRIGUES, romulotales, Shmi Skywalker, talves, thiago20, thiagoalgo, Vinicius, viniciusgoncalves, viniciusluiz, Wendel Carvalho, wender, wil, wingdoido, XPTO, YaCy, zeantonio, zorba e 1 visitante


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi