Specifica il tipo di metodo di immissione

Prova la modalità Scrivi
Jetpack Compose è il toolkit dell'interfaccia utente consigliato per Android. Scopri come usare tocco e input in Scrivi.

Ogni campo di testo prevede un determinato tipo di input di testo, ad esempio indirizzo email, numero di telefono o testo normale. Devi specificare il tipo di input per ogni campo di testo dell'app in modo che il sistema visualizzi il metodo di immissione flessibile appropriato, ad esempio una tastiera sullo schermo.

In aggiunta al tipo di pulsanti disponibile con un metodo di inserimento, puoi specificare comportamenti quali se il metodo di immissione fornisca suggerimenti ortografici, usi l'iniziale maiuscola per le nuove frasi e sostituisca il pulsante Ritorno a capo con un pulsante di azione come Fine o Avanti. Questa pagina mostra come specificare queste caratteristiche.

Specifica il tipo di tastiera

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

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

Ad esempio, se vuoi 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 di testo nasconda 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 dei valori per specificare l'aspetto del metodo di inserimento e altri comportamenti.

Attiva i suggerimenti ortografici e altri comportamenti

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

L'attributo android:inputType consente di specificare vari comportamenti per il metodo di inserimento. Soprattutto, se il campo di testo è destinato all'inserimento di testo di base, ad esempio un messaggio di testo, attiva la correzione automatica dell'ortografia con il valore "textAutoCorrect".

Puoi combinare diversi comportamenti e stili dei metodi di inserimento con l'attributo android:inputType. Ad esempio, ecco come creare un campo di testo che utilizzi la maiuscola per la prima parola di una frase e che 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 il campo di testo corrente. Per impostazione predefinita, il sistema utilizza questo pulsante per un'azione Avanti o Fine, a meno che il campo di testo non supporti un testo su più righe, ad esempio con android:inputType="textMultiLine", nel qual caso il pulsante di azione è un ritorno a capo. 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 l'attributo android:imeOptions con un valore di azione come "actionSend" o "actionSearch". Ad 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 un TextView.OnEditorActionListener per l'elemento EditText. Nel tuo ascoltatore, rispondi all'ID azione IME appropriato definito nella classe EditorInfo, ad esempio 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 chiamata AutoCompleteTextView. Per implementare il completamento automatico, devi specificare un Adapter che fornisca i suggerimenti di testo. Sono disponibili diversi adattatori, a seconda della provenienza dei dati, ad esempio da un database o da un array.

suggerimenti di testo
Figura 5. Esempio di AutoCompleteTextView con suggerimenti testuali.

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

  1. Aggiungi AutoCompleteTextView al layout. Ecco un layout con solo il campo di testo:
    <?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. In Activity o Fragment, utilizza il seguente codice per specificare 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 dell'array di stringhe countries_array a un TextView esistente nel layout simple_list_item_1. Si tratta di un layout fornito da Android che offre un aspetto standard per il testo in un elenco.

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