Specifica il tipo di metodo di immissione

Prova il metodo Scrivi
Jetpack Compose è il toolkit consigliato per la UI per Android. Scopri come utilizzare il tocco e l'input in Compose.

Ogni campo di testo richiede un determinato tipo di input di testo, come indirizzo email, numero di telefono o testo normale. Devi specificare il tipo di input per ogni campo di testo nell'app in modo che il sistema venga visualizzato il metodo di immissione software appropriato, ad esempio una tastiera sullo schermo.

Oltre al tipo di pulsanti disponibili con un metodo di inserimento, è possibile specificare comportamenti come se il metodo di inserimento fornisce suggerimenti ortografici, mette in maiuscolo le nuove frasi e sostituisce il pulsante di ritorno a capo con un pulsante di azione come Fine o Avanti. In questa pagina viene illustrato come per specificare queste caratteristiche.

Specifica il tipo di tastiera

Dichiara sempre il metodo di inserimento per i campi di testo aggiungendo il metodo android:inputType all'attributo Elemento <EditText>.

input del numero di telefono
Figura 1. Il tipo di input phone.

Ad esempio, se desideri un metodo di inserimento per inserire un numero di telefono, utilizza il Valore "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 di input textPassword
Figura 2. Il tipo di input textPassword.

Se il campo di testo è per una password, utilizza il valore "textPassword" in modo che il campo nasconde l'input dell'utente:

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

Esistono diversi valori possibili documentati con l'attributo android:inputType, e puoi combinare alcuni valori per specificare l'aspetto del metodo di inserimento e ulteriori i comportamenti dei modelli,

Attiva i suggerimenti ortografici e altri comportamenti

correzione automatica
Figura 3. L'aggiunta di textAutoCorrect fornisce la correzione automatica per errori ortografici.

L'attributo android:inputType ti consente di specificare vari comportamenti per l'input . Ma soprattutto, se il campo di testo è destinato all'input di testo di base, ad esempio una SMS: attiva la correzione automatica dell'ortografia con l'"textAutoCorrect" valore.

Puoi combinare comportamenti e stili dei metodi di immissione diversi con Attributo android:inputType. Ad esempio, ecco come creare un campo di testo che mette in maiuscolo la prima parola di una frase e corregge automaticamente gli errori ortografici:

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

Specifica l'azione del metodo di inserimento

La maggior parte dei metodi di immissione software offre nell'angolo inferiore un pulsante di azione dell'utente appropriato per campo di testo corrente. Per impostazione predefinita, il sistema utilizza questo pulsante per un evento Avanti o Fine a meno che il campo di testo non supporti testo multiriga, ad esempio con android:inputType="textMultiLine": in questo caso il pulsante di azione è un carrello. per tornare indietro. Tuttavia, puoi specificare altre azioni che potrebbero essere più appropriate per il tuo campo di testo, ad esempio Invia o Vai.

Per specificare il pulsante di azione della tastiera, utilizza il android:imeOptions con un valore di azione come "actionSend" o "actionSearch". Per esempio:

pulsante Invia
Figura 4. Il pulsante Invia viene visualizzato quando dichiari 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" />

Puoi quindi ascoltare le pressioni sul pulsante di azione definendo una TextView.OnEditorActionListener per l'elemento EditText. Nel tuo listener, rispondi all'ID azione IME appropriato definito nel EditorInfo corso, come IME_ACTION_SEND, come mostrato nell'esempio seguente:

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;
    }
});

Fornisci suggerimenti per il completamento automatico

Se vuoi fornire suggerimenti agli utenti durante la digitazione, puoi utilizzare una sottoclasse EditText ha chiamato AutoCompleteTextView. Per implementare il completamento automatico, devi specificare Adapter che fornisce il testo suggerimenti. Sono disponibili diversi adattatori, a seconda della provenienza dei dati, come da un database o da un array.

suggerimenti di testo
Figura 5. Esempio di AutoCompleteTextView con testo i tuoi suggerimenti.

La seguente procedura descrive come configurare un AutoCompleteTextView che fornisce suggerimenti da un array utilizzando ArrayAdapter:

  1. Aggiungi AutoCompleteTextView al layout. Ecco un layout con solo il testo campo:
    <?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. Definisci l'array che contiene tutti i suggerimenti di testo. Ad esempio, ecco un array di nomi di paesi:
    <?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. Nel tuo Activity o Fragment, usa il seguente codice per specifica l'adattatore che fornisce i suggerimenti:

    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);
    

    Nell'esempio precedente, viene inizializzato un nuovo ArrayAdapter per associare ogni elemento nel da un array di stringhe countries_array a un TextView che esiste in layout simple_list_item_1. Si tratta di un layout fornito da Android che offre aspetto standard del testo in un elenco.

  4. Assegna l'adattatore a AutoCompleteTextView chiamando setAdapter().