Como mostro o teclado numérico em um EditText no Android?

146

Eu basicamente quero mudar para o modo de teclado numérico assim que um certo EditText tiver o foco.

Chiwai Chan
fonte
4
A pergunta não indica especificamente o desejo de alterar o tipo de entrada permitido. Ele simplesmente pergunta como alterar o modo do teclado, que é o que eu gostaria de fazer sem alterar o tipo de entrada. Todas as respostas explicam como alterar o tipo de entrada.
precisa saber é o seguinte
Verifique minha resposta nesta pergunta stackoverflow.com/questions/39593324/…
Ajuda do Android

Respostas:

261

Você pode configurar um inputTypepara o seu EditText:

<EditText android:inputType="number" ... />
Josef Pfleger
fonte
6
Além disso, note que você precisa para atingir Android 1.5 para usar este (ele não está disponível em 1.1)
Wilka
4
O problema é que você não pode voltar. Usar "número | texto" também não funciona. Parece que, se você deseja mostrar um teclado numérico, não pode permitir que ele volte ao texto.
Eu concordo com Brian .. se o primeiro campo for alfa e o próximo campo for numérico, não posso ir para o próximo campo usando o botão 'Próximo'!
Ahmed
Se você pode voltar ou não, depende do telefone, eu acho. O meu permite.
Martin Clemens Bloch
Quero alterar o número do tipo de teclado e quero colar o texto no edittext. Como fazer?
İbrahim YANIK 30/11/19
115

Para fazer isso em um arquivo Java:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
Dominic
fonte
51

Achei essa implementação útil, mostra um teclado melhor e limita os caracteres de entrada.

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

Além disso, você pode usar android:maxLength para limitar a quantidade máxima de números.

Para fazer isso programaticamente:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);
Matthijs
fonte
Existe alguma maneira de fazer isso programaticamente? Estou ansioso para obter um teclado de número limitado para o meu EditText, mas ele é configurado de tal maneira que precisa ser gerado na atividade.
Martin Erlic
18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

mostrará o teclado numérico grande como discador.

Nguyen Minh Binh
fonte
11

Você pode fazer isso de duas maneiras

  1. Conjunto de tempo de execução

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. Usando XML

    <EditText
        ...
        android:inputType="number" />
Nirav Ranpara
fonte
5

Se você precisar de um número fracionário, esta é a resposta para você:

android:inputType="numberDecimal"
macio.Jun
fonte
4

Se você estiver usando seu EditText na caixa de diálogo ou criando dinamicamente e não puder defini-lo a partir do xml, este exemplo o ajudará a definir esse tipo de teclado enquanto estiver usando o Edit Edit dinâmico, etc.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

onde myEditTxt é o objeto dinâmico EDIT TEXT (nome)

Pir Fahim Shah
fonte
2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Aliya
fonte
Se você estiver formatando manualmente um texto (como na moeda) e quiser controlar apenas o teclado, essa é a escolha. Não filtrará seus caracteres. Obrigado!
lauksas
Isso funcionou como um encanto para mim. Desejo exibir um valor de espaço reservado para texto quando um campo ainda não foi editado, mas ainda assim restringir a entrada a números e exibir um teclado restrito.
Alex Suzuki
2

Mais tipos e detalhes de entrada encontrados aqui no site do google

sai Gorantla
fonte
2

O código abaixo permitirá apenas os números "0123456789", mesmo se você digitar acidentalmente diferente de "0123456789", o texto de edição não será aceito.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));
Akhila Madari
fonte
Você deve adicionar comentário explicando o seu código e por isso é a solução
cyroxis
1

Use o código abaixo no arquivo java

editText.setRawInputType (Configuration.KEYBOARD_QWERTY);

Darshuu
fonte
0

Defina isso no seu código xml

android:inputType="number"
fulgen
fonte
0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);
Shiv Buyya
fonte
Se você tiver o EditText número1 criado no código xml de layout, se desejar definir o Teclado numérico como número1 EditText, poderá fazer isso usando o Código Java.
Shiv Buyya