Keyboard Type — o que é, tipos de teclado e configuração de entrada no Android

Autor: IT Sectr Publicado: 2026-07-07 Tempo de leitura: 9 min

Keyboard Type é uma configuração do teclado virtual no Android que define o conjunto de caracteres exibidos e o layout para um campo de entrada específico. O Android suporta muitos tipos predefinidos: text (texto padrão), number (numérico), phone (telefônico), email (com símbolo @), textPassword (para senhas), datetime e outros. Cada tipo otimiza a interface de entrada para uma tarefa específica — por exemplo, o teclado de email mostra o símbolo @ e o ponto na tela principal. De acordo com Android Developers (2026), escolher o Keyboard Type correto reduz o número de digitações em 20–40% em comparação com um teclado de texto padrão.

Principais Conclusões

  • Keyboard Type — modo de teclado definido pelo atributo android:inputType no Android.
  • Tipos principais — text, number, phone, email, textPassword, datetime para diferentes cenários de entrada.
  • Otimização de entrada — o tipo correto de teclado acelera o preenchimento de formulários em 20–40%.
  • Combinação de flags — inputType combina classe de entrada e modificadores (multilinha, autocorreção).
  • Opções IME — o atributo imeOptions controla o botão de ação no teclado (Done, Search, Next).

O que é Keyboard Type no Android

Keyboard Type é determinado pelo valor do atributo android:inputType em XML ou por uma chamada programática setInputType() no código. InputType é uma máscara de bits onde a classe de entrada é combinada com flags modificadoras. As classes base são: TYPE_CLASS_TEXT para texto, TYPE_CLASS_NUMBER para números, TYPE_CLASS_PHONE para telefones, TYPE_CLASS_DATETIME para datas e horas.

Cada Keyboard Type afeta três aspectos: o layout do teclado virtual (quais caracteres são visíveis na tela principal), a filtragem de caracteres inseridos (quais caracteres são permitidos) e o comportamento de autocorreção/autocompletar. Por exemplo, o teclado numérico exibe apenas dígitos e o separador decimal, e não mostra letras mesmo se o usuário alternar maiúsculas/minúsculas. De acordo com Android Developers Documentation (2026), combinar classes com flags permite criar modos altamente especializados: texto multilinha com autocorreção, número de ponto flutuante, senha com suporte a autopreenchimento.

É importante entender que Keyboard Type é uma recomendação para o sistema de entrada (IME). Alguns teclados de terceiros (Gboard, SwiftKey) podem ignorar parcialmente o tipo especificado se o usuário configurou suas próprias preferências. No entanto, a maioria dos teclados Android padrão e o Google Gboard seguem estritamente o tipo de entrada especificado.

kotlin
// Configuração programática do tipo de teclado
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — teclado de texto padrão

TYPE_CLASS_TEXT é a classe base para entrada de texto. Ela ativa o teclado QWERTY padrão com letras, dígitos e símbolos. A classe texto tem o maior número de modificadores que refinam o comportamento: TYPE_TEXT_FLAG_CAP_SENTENCES (letra maiúscula automática no início de uma frase), TYPE_TEXT_FLAG_AUTO_CORRECT (autocorreção), TYPE_TEXT_FLAG_MULTI_LINE (modo multilinha), TYPE_TEXT_FLAG_NO_SUGGESTIONS (desativar sugestões).

Os modificadores do teclado de texto podem ser combinados para criar configurações precisas: por exemplo, text|textCapSentences|textAutoCorrect é adequado para um campo de entrada de comentário onde são necessárias maiúscula automática e correção de erros de digitação. Enquanto text|textNoSuggestions é usado para inserir código ou termos especiais onde a autocorreção pode ser prejudicial.

De acordo com UX Stack Exchange (2025), um teclado de texto com autocorreção ativada acelera a digitação em 15–25% para o usuário médio, mas para termos técnicos (código, URL, email) é recomendado desativar a autocorreção, pois ela frequentemente substitui termos corretos por incorretos.

xml
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"

<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"

Number — teclado numérico

TYPE_CLASS_NUMBER ativa o teclado numérico, que exibe apenas dígitos, o separador decimal e o sinal de menos. Este tipo é usado para campos de entrada de quantidade, preços, idade, códigos e outros dados numéricos. O teclado numérico ocupa menos espaço na tela que um teclado de texto e elimina a entrada acidental de letras.

Number tem três modificadores: TYPE_NUMBER_FLAG_DECIMAL adiciona um ponto/vírgula decimal, TYPE_NUMBER_FLAG_SIGNED adiciona um sinal de menos para números negativos, TYPE_NUMBER_VARIATION_PASSWORD — para códigos PIN onde os dígitos são exibidos como caracteres ocultos. A combinação number|numberDecimal|numberSigned cria um campo completo para inserir números de ponto flutuante de qualquer sinal.

  • number — inteiros positivos (idade, quantidade de produtos).
  • numberDecimal — números com parte decimal (preços, peso, altura).
  • numberSigned — números com sinal (temperatura, coordenadas).
  • numberPassword — entrada oculta de dígitos para códigos PIN.
kotlin
// Entrada numérica com ponto decimal
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Verificar número inserido
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0

Phone e Email — teclados especializados

TYPE_CLASS_PHONE ativa o teclado telefônico, que exibe dígitos e caracteres típicos de números de telefone: +, #, *, (, ). Diferente do teclado numérico, o phone também mostra um layout de letras em um modo adicional, pois números de telefone podem conter letras (por exemplo, 1-800-FLOWERS). A classe phone não tem flags adicionais, mas suporta TYPE_TEXT_VARIATION_PHONE_ETC para inserir ramais.

TYPE_TEXT_VARIATION_EMAIL_ADDRESS ativa o teclado de email, onde o símbolo @ e o ponto estão na tela principal, e extensões de domínio comuns (.com, .net, .org) também estão disponíveis. O Gboard adicionalmente mostra botões com domínios populares ao digitar após @. O teclado de email desativa automaticamente a autocorreção, pois endereços de email podem conter combinações de caracteres não padrão.

De acordo com Google Material Design Guidelines (2025), para campos de telefone é recomendado adicionalmente especificar o atributo android:digits, que limita o conjunto de caracteres permitidos. Para campos de email, também é importante especificar autofillHints="email" para suportar autopreenchimento de gerenciadores de senhas e Google Autofill.

xml
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"

<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"

Password — teclado para senhas

TYPE_TEXT_VARIATION_PASSWORD e TYPE_NUMBER_VARIATION_PASSWORD são modos de entrada para dados sensíveis. Quando textPassword é definido, os caracteres inseridos são exibidos como pontos ou asteriscos (dependendo da versão do Android e do teclado). O teclado neste modo desativa a autocorreção e o salvamento de palavras inseridas no dicionário do usuário, prevenindo vazamento de senhas através de recursos de entrada preditiva.

O teclado Password também desativa a capacidade de capturar screenshots do conteúdo do campo (flag FLAG_SECURE), embora este comportamento dependa da implementação específica do teclado. A partir do Android 8.0 (API 26), teclados de senha suportam autopreenchimento através de gerenciadores de senhas se o atributo importantForAutofill="yes" estiver definido.

De acordo com Android Security Recommendations (2025), para campos de senha também é recomendado: definir maxLength para evitar senhas muito longas (que podem ser um vetor de ataque ao banco de dados), usar inputType="textPassword" junto com TextInputLayout e endIconMode="password_toggle" para que o usuário possa verificar a senha inserida antes de enviar o formulário.

xml
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">

    @+id/etPasswordField
    android:inputType="textPassword"
    android:maxLength="64"
    android:importantForAutofill="yes" />

</com.google.android.material.textfield.TextInputLayout>

Configurar Keyboard Type no código

A configuração programática de Keyboard Type permite mudar dinamicamente o modo do teclado dependendo do contexto ou da entrada do usuário. Por exemplo, ao alternar o tipo de campo (texto/número/data) ou ao alterar a localidade. O método setInputType() aceita uma máscara de bits InputType e atualiza imediatamente o teclado se o campo estiver em foco.

Alternância dinâmica de tipo

kotlin
// Alternar entre entrada de texto e numérica
fun switchInputType(field: EditText, isNumeric: Boolean) {
    field.inputType = if (isNumeric) {
        InputType.TYPE_CLASS_NUMBER or
            InputType.TYPE_NUMBER_FLAG_DECIMAL
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
    }
    field.setSelection(field.text.length)
}

Verificar o tipo atual

kotlin
// Verificar se o campo é numérico
fun isNumericInput(field: EditText): Boolean {
    val type = field.inputType
    return (type and InputType.TYPE_MASK_CLASS) ==
        InputType.TYPE_CLASS_NUMBER
}

// Verificar se a autocorreção está ativada
fun isAutoCorrectEnabled(field: EditText): Boolean {
    return (field.inputType and
        InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}

Perguntas Frequentes

O que acontece se Keyboard Type não for especificado?

Se inputType não for especificado, o EditText usa por padrão TYPE_CLASS_TEXT com a flag TYPE_TEXT_FLAG_MULTI_LINE. Isso significa um teclado QWERTY padrão e entrada multilinha. Para a maioria dos campos, é recomendado especificar explicitamente inputType para garantir o comportamento correto do teclado e a filtragem de caracteres.

Como criar um teclado com botão "Concluído" em vez de "Enter"?

Use o atributo android:imeOptions="actionDone" no EditText. Isso substituirá o botão Enter por um botão Concluído. Outras opções: actionSearch (lupa), actionNext (seta direita), actionSend (enviar). Trate o pressionamento via OnEditorActionListener no código.

É possível desativar a vibração do teclado para um campo específico?

Não é possível desativar a vibração para um campo específico — é uma configuração do sistema controlada pelo usuário nas configurações do teclado. No entanto, é possível impedir que o teclado apareça completamente definindo o atributo android:focusable="false" no EditText ou anulando a exibição através de dispatchTouchEvent.

Como criar um campo somente leitura com capacidade de copiar texto?

Defina android:inputType="none" ou chame programaticamente editText.setKeyListener(null). O campo exibirá texto, mas o teclado não aparecerá ao focar. O usuário poderá selecionar e copiar texto, mas não editá-lo. Uma alternativa é usar TextView com textIsSelectable="true".

Por que o teclado não muda após setInputType()?

Após chamar setInputType(), é necessário mostrar o teclado novamente, pois o sistema pode não atualizar o IME automaticamente. Chame InputMethodManager.restartInput(view) para forçar uma atualização. Se o campo não estiver em foco, primeiro chame requestFocus(), depois restartInput.

Resumo

  • Keyboard Type define o layout, filtragem e comportamento do teclado para um campo de entrada Android.
  • text — teclado QWERTY padrão com modificadores para autocorreção, capitalização e multilinha.
  • number — teclado numérico para inteiros e decimais com opções signed e decimal.
  • phone — teclado telefônico com dígitos, +, #, * e suporte para números alfanuméricos.
  • email — teclado com @, ponto e acesso rápido a extensões de domínio.
  • textPassword — entrada oculta com autocorreção e salvamento em dicionário desativados.
  • imeOptions configura o botão de ação no teclado: Done, Search, Next, Send.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também