Cómo especificar el tipo de método de entrada

Prueba el método de Compose
Jetpack Compose es el kit de herramientas de IU recomendado para Android. Aprende a usar el control táctil y la entrada en Compose.

Cada campo de texto espera un cierto tipo de entrada de texto, como una dirección de correo electrónico, un número de teléfono o texto sin formato. Debes especificar el tipo de entrada para cada campo de texto en tu app para que el sistema muestre el método de entrada de software adecuado, como un teclado en pantalla.

Más allá del tipo de botones disponibles con un método de entrada, puedes especificar comportamientos como si el método de entrada proporciona sugerencias ortográficas, capitaliza las nuevas oraciones y reemplaza las botón de retorno de carro con un botón de acción, como Listo o Siguiente. En esta página, se muestra cómo para especificar estas características.

Cómo especificar el tipo de teclado

Declara siempre el método de entrada para tus campos de texto agregando android:inputType al <EditText>.

entrada del teléfono
Figura 1: El tipo de entrada phone.

Por ejemplo, si quieres un método de entrada para ingresar un número de teléfono, usa el Valor de "phone":

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
Tipo de entrada textPassword
Figura 2: El tipo de entrada textPassword.

Si el campo de texto es de una contraseña, usa el valor "textPassword" para que el campo de texto oculta la entrada del usuario:

<EditText
    android:id="@+id/password"
    android:hint="@string/password_hint"
    android:inputType="textPassword"
    ... />

Hay varios valores posibles documentados con el atributo android:inputType. y puedes combinar algunos de los valores para especificar la apariencia del método de entrada los comportamientos del modelo.

Cómo habilitar sugerencias de ortografía y otros comportamientos

autocorrección
Figura 3: Agregar textAutoCorrect brinda corrección automática para con errores ortográficos.

El atributo android:inputType te permite especificar varios comportamientos para la entrada. . Lo más importante es que si tu campo de texto está destinado a la entrada de texto básica, como una mensaje de texto: habilita la corrección ortográfica automática con el "textAutoCorrect" valor.

Puedes combinar diferentes comportamientos y estilos de métodos de entrada con el atributo android:inputType. Por ejemplo, aquí te mostramos cómo crear un campo de texto que escribe con mayúscula la primera palabra de una oración y también corrige automáticamente los errores ortográficos:

<EditText
    android:id="@+id/message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType=
        "textCapSentences|textAutoCorrect"
    ... />

Cómo especificar la acción del método de entrada

La mayoría de los métodos de entrada de software proporcionan un botón de acción del usuario en la esquina inferior que es apropiado para el campo de texto actual. De forma predeterminada, el sistema usa este botón para las acciones Next o Done, a menos que el campo de texto admita texto de varias líneas, como con android:inputType="textMultiLine": En este caso, el botón de acción es un vagón. el resultado. Sin embargo, puedes especificar otras acciones que podrían ser más apropiadas para tu campo de texto. como Enviar o Ir.

Para especificar el botón de acción del teclado, usa el android:imeOptions con un valor de acción, como "actionSend" o "actionSearch". Por ejemplo:

botón para enviar
Figura 4: El botón Enviar aparece cuando declaras android:imeOptions="actionSend"
<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSend" />

Luego, puedes escuchar las pulsaciones en el botón de acción definiendo un TextView.OnEditorActionListener para el elemento EditText. En tu o un objeto de escucha, responde al ID de acción IME correspondiente que se define en la Clase EditorInfo, como, por ejemplo, IME_ACTION_SEND, como se muestra en el siguiente ejemplo:

Kotlin

findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event ->
    return@setOnEditorActionListener when (actionId) {
        EditorInfo.IME_ACTION_SEND -> {
            sendMessage()
            true
        }
        else -> false
    }
}

Java

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});

Cómo proporcionar sugerencias de autocompletar

Si quieres brindar sugerencias a los usuarios mientras escriben, puedes usar una subclase de Se llamó a EditText AutoCompleteTextView Para implementar la función de autocompletar, debes especificar un Adapter que proporciona el texto sugerencias. Hay varios adaptadores disponibles, según el origen de los datos, como como a partir de una base de datos o un array.

sugerencias de texto
Figura 5: Ejemplo de AutoCompleteTextView con texto sugerencias.

En el siguiente procedimiento, se describe cómo configurar un AutoCompleteTextView que brinda sugerencias a partir de un array con ArrayAdapter

  1. Agrega la clase AutoCompleteTextView a tu diseño. Este es un diseño que solo incluye texto :
    <?xml version="1.0" encoding="utf-8"?>
    <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    
  2. Define el arreglo que contiene todas las sugerencias de texto. Por ejemplo, aquí está un array de nombres de países:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="countries_array">
            <item>Afghanistan</item>
            <item>Albania</item>
            <item>Algeria</item>
            <item>American Samoa</item>
            <item>Andorra</item>
            <item>Angola</item>
            <item>Anguilla</item>
            <item>Antarctica</item>
            ...
        </string-array>
    </resources>
    
  3. En tu Activity o Fragment, usa el siguiente código para especifica el adaptador que proporciona las sugerencias:

    Kotlin

    // Get a reference to the AutoCompleteTextView in the layout.
    val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView
    // Get the string array.
    val countries: Array<out String> = resources.getStringArray(R.array.countries_array)
    // Create the adapter and set it to the AutoCompleteTextView.
    ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter ->
        textView.setAdapter(adapter)
    }
    

    Java

    // Get a reference to the AutoCompleteTextView in the layout.
    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
    // Get the string array.
    String[] countries = getResources().getStringArray(R.array.countries_array);
    // Create the adapter and set it to the AutoCompleteTextView.
    ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);
    textView.setAdapter(adapter);
    

    En el ejemplo anterior, se inicializa un ArrayAdapter nuevo para vincular cada elemento en el Array de cadenas countries_array en un TextView que existe en Diseño simple_list_item_1. Este es un diseño de Android que ofrece un aspecto estándar del texto en una lista.

  4. Asigna el adaptador a AutoCompleteTextView llamando a setAdapter()