Keyboard Type — qué es, tipos de teclado y configuración de entrada en Android

Autor: IT Sectr Publicado: 2026-07-07 Tiempo de lectura: 9 min

Keyboard Type es una configuración del teclado virtual en Android que define el conjunto de caracteres mostrados y la disposición para un campo de entrada específico. Android admite muchos tipos preestablecidos: text (texto estándar), number (numérico), phone (telefónico), email (con símbolo @), textPassword (para contraseñas), datetime y otros. Cada tipo optimiza la interfaz de entrada para una tarea específica — por ejemplo, el teclado de email muestra el símbolo @ y el punto en la pantalla principal. Según Android Developers (2026), elegir el Keyboard Type correcto reduce el número de pulsaciones en un 20–40% en comparación con un teclado de texto estándar.

Puntos Clave

  • Keyboard Type — modo de teclado definido por el atributo android:inputType en Android.
  • Tipos principales — text, number, phone, email, textPassword, datetime para diferentes escenarios de entrada.
  • Optimización de entrada — el tipo de teclado correcto acelera el llenado de formularios en un 20–40%.
  • Combinación de banderas — inputType combina la clase de entrada y modificadores (multilínea, autocorrección).
  • Opciones IME — el atributo imeOptions controla el botón de acción en el teclado (Done, Search, Next).

¿Qué es Keyboard Type en Android?

Keyboard Type se determina por el valor del atributo android:inputType en XML o mediante una llamada programática a setInputType() en código. InputType es una máscara de bits donde la clase de entrada se combina con banderas modificadoras. Las clases base son: TYPE_CLASS_TEXT para texto, TYPE_CLASS_NUMBER para números, TYPE_CLASS_PHONE para teléfonos, TYPE_CLASS_DATETIME para fechas y horas.

Cada Keyboard Type afecta tres aspectos: la disposición del teclado virtual (qué caracteres son visibles en la pantalla principal), el filtrado de caracteres ingresados (qué caracteres están permitidos) y el comportamiento de autocorrección/autocompletado. Por ejemplo, el teclado numérico muestra solo dígitos y el separador decimal, y no muestra letras incluso si el usuario cambia de mayúsculas. Según Android Developers Documentation (2026), combinar clases con banderas permite crear modos altamente especializados: texto multilínea con autocorrección, número de punto flotante, contraseña con soporte de autocompletado.

Es importante entender que Keyboard Type es una recomendación para el sistema de entrada (IME). Algunos teclados de terceros (Gboard, SwiftKey) pueden ignorar parcialmente el tipo especificado si el usuario ha configurado sus propias preferencias. Sin embargo, la mayoría de los teclados estándar de Android y Google Gboard siguen estrictamente el tipo de entrada especificado.

kotlin
// Configuración programática del 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 estándar

TYPE_CLASS_TEXT es la clase base para la entrada de texto. Activa el teclado QWERTY estándar con letras, dígitos y símbolos. La clase de texto tiene la mayor cantidad de modificadores que refinan el comportamiento: TYPE_TEXT_FLAG_CAP_SENTENCES (letra mayúscula automática al inicio de una oración), TYPE_TEXT_FLAG_AUTO_CORRECT (autocorrección), TYPE_TEXT_FLAG_MULTI_LINE (modo multilínea), TYPE_TEXT_FLAG_NO_SUGGESTIONS (desactivar sugerencias).

Los modificadores del teclado de texto se pueden combinar para crear configuraciones precisas: por ejemplo, text|textCapSentences|textAutoCorrect es adecuado para un campo de entrada de comentarios donde se necesita mayúscula automática y corrección de errores tipográficos. Mientras tanto, text|textNoSuggestions se usa para ingresar código o términos especiales donde la autocorrección puede ser perjudicial.

Según UX Stack Exchange (2025), un teclado de texto con autocorrección activada acelera la escritura en un 15–25% para el usuario promedio, pero para términos técnicos (código, URL, email) se recomienda desactivar la autocorrección, ya que a menudo reemplaza términos correctos por incorrectos.

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 activa el teclado numérico, que muestra solo dígitos, el separador decimal y el signo menos. Este tipo se usa para campos de entrada de cantidad, precios, edad, códigos y otros datos numéricos. El teclado numérico ocupa menos espacio en pantalla que un teclado de texto y elimina la entrada accidental de letras.

Number tiene tres modificadores: TYPE_NUMBER_FLAG_DECIMAL añade un punto/como decimal, TYPE_NUMBER_FLAG_SIGNED añade un signo menos para números negativos, TYPE_NUMBER_VARIATION_PASSWORD — para códigos PIN donde los dígitos se muestran como caracteres ocultos. La combinación number|numberDecimal|numberSigned crea un campo completo para ingresar números de punto flotante de cualquier signo.

  • number — enteros positivos (edad, cantidad de productos).
  • numberDecimal — números con parte decimal (precios, peso, altura).
  • numberSigned — números con signo (temperatura, coordenadas).
  • numberPassword — entrada oculta de dígitos para códigos PIN.
kotlin
// Entrada numérica con punto decimal
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

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

Phone y Email — teclados especializados

TYPE_CLASS_PHONE activa el teclado telefónico, que muestra dígitos y caracteres típicos de números de teléfono: +, #, *, (, ). A diferencia del teclado numérico, phone también muestra una disposición de letras en un modo adicional, ya que los números de teléfono pueden contener letras (por ejemplo, 1-800-FLOWERS). La clase phone no tiene banderas adicionales pero admite TYPE_TEXT_VARIATION_PHONE_ETC para ingresar extensiones.

TYPE_TEXT_VARIATION_EMAIL_ADDRESS activa el teclado de email, donde el símbolo @ y el punto están en la pantalla principal, y también están disponibles las extensiones de dominio comunes (.com, .net, .org). Gboard adicionalmente muestra botones con dominios populares al escribir después de @. El teclado de email desactiva automáticamente la autocorrección ya que las direcciones de email pueden contener combinaciones de caracteres no estándar.

Según Google Material Design Guidelines (2025), para campos de teléfono se recomienda adicionalmente especificar el atributo android:digits, que limita el conjunto de caracteres permitidos. Para campos de email, también es importante especificar autofillHints="email" para admitir el autocompletado de gestores de contraseñas y 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 contraseñas

TYPE_TEXT_VARIATION_PASSWORD y TYPE_NUMBER_VARIATION_PASSWORD son modos de entrada para datos sensibles. Cuando se establece textPassword, los caracteres ingresados se muestran como puntos o asteriscos (dependiendo de la versión de Android y el teclado). El teclado en este modo desactiva la autocorrección y el guardado de palabras ingresadas en el diccionario del usuario, evitando la fuga de contraseñas a través de funciones de entrada predictiva.

El teclado Password también desactiva la capacidad de tomar capturas de pantalla del contenido del campo (bandera FLAG_SECURE), aunque este comportamiento depende de la implementación específica del teclado. A partir de Android 8.0 (API 26), los teclados de contraseña admiten autocompletado a través de gestores de contraseñas si se establece el atributo importantForAutofill="yes".

Según Android Security Recommendations (2025), para campos de contraseña también se recomienda: establecer maxLength para evitar contraseñas muy largas (que podrían ser un vector de ataque a la base de datos), usar inputType="textPassword" junto con TextInputLayout y endIconMode="password_toggle" para que el usuario pueda verificar la contraseña ingresada antes de enviar el formulario.

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 en código

La configuración programática de Keyboard Type permite cambiar dinámicamente el modo del teclado según el contexto o la entrada del usuario. Por ejemplo, al cambiar el tipo de campo (texto/número/fecha) o al cambiar la configuración regional. El método setInputType() acepta una máscara de bits InputType y actualiza inmediatamente el teclado si el campo está enfocado.

Cambio dinámico de tipo

kotlin
// Cambiar entre entrada de texto y 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 el tipo actual

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

// Verificar si la autocorrección está activada
fun isAutoCorrectEnabled(field: EditText): Boolean {
    return (field.inputType and
        InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}

Preguntas Frecuentes

¿Qué sucede si no se especifica Keyboard Type?

Si no se especifica inputType, EditText utiliza por defecto TYPE_CLASS_TEXT con la bandera TYPE_TEXT_FLAG_MULTI_LINE. Esto significa un teclado QWERTY estándar y entrada multilínea. Para la mayoría de los campos, se recomienda especificar explícitamente inputType para garantizar un comportamiento correcto del teclado y el filtrado de caracteres.

¿Cómo crear un teclado con un botón "Hecho" en lugar de "Intro"?

Usa el atributo android:imeOptions="actionDone" en EditText. Esto reemplazará el botón Intro con un botón Hecho. Otras opciones: actionSearch (lupa), actionNext (flecha derecha), actionSend (enviar). Maneja la pulsación mediante OnEditorActionListener en el código.

¿Se puede desactivar la vibración del teclado para un campo específico?

No se puede desactivar la vibración para un campo específico — es una configuración del sistema controlada por el usuario en la configuración del teclado. Sin embargo, se puede evitar que aparezca el teclado por completo estableciendo el atributo android:focusable="false" en EditText o anulando la visualización mediante dispatchTouchEvent.

¿Cómo crear un campo de solo lectura con posibilidad de copiar texto?

Establece android:inputType="none" o llama programáticamente a editText.setKeyListener(null). El campo mostrará texto, pero el teclado no aparecerá al enfocarse. El usuario podrá seleccionar y copiar texto, pero no editarlo. Una alternativa es usar TextView con textIsSelectable="true".

¿Por qué el teclado no cambia después de setInputType()?

Después de llamar a setInputType(), es necesario volver a mostrar el teclado, ya que el sistema puede no actualizar el IME automáticamente. Llama a InputMethodManager.restartInput(view) para forzar una actualización. Si el campo no está enfocado, primero llama a requestFocus(), luego a restartInput.

Resumen

  • Keyboard Type define la disposición, el filtrado y el comportamiento del teclado para un campo de entrada de Android.
  • text — teclado QWERTY estándar con modificadores de autocorrección, mayúsculas y multilínea.
  • number — teclado numérico para enteros y decimales con opciones signed y decimal.
  • phone — teclado telefónico con dígitos, +, #, * y soporte para números alfanuméricos.
  • email — teclado con @, punto y acceso rápido a extensiones de dominio.
  • textPassword — entrada oculta con autocorrección y guardado en diccionario desactivados.
  • imeOptions configura el botón de acción en el teclado: Done, Search, Next, Send.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también