Ogni campo di testo prevede un determinato tipo di input di testo, ad esempio un indirizzo email, un numero di telefono o testo normale. Devi specificare il tipo di input per ogni campo di testo nella tua app in modo che il sistema visualizzi il metodo di immissione su schermo appropriato, ad esempio una tastiera sullo schermo.
Oltre al tipo di pulsanti disponibili con un metodo di input, puoi specificare comportamenti come se il metodo di input fornisca suggerimenti ortografici, metta in maiuscolo le nuove frasi e sostituisca il pulsante di 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 input per i campi di testo aggiungendo l'
android:inputType
attributo all'
<EditText> elemento.
phone.Ad esempio, se vuoi un metodo di input 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" />
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 input e comportamenti aggiuntivi.
Attiva i suggerimenti ortografici e altri comportamenti
textAutoCorrect fornisce la correzione automatica degli errori di ortografia.L'attributo android:inputType consente di specificare vari comportamenti per il metodo di input. Ancora più importante, se il campo di testo è destinato all'input di testo di base, ad esempio per un messaggio di testo, attiva la correzione ortografica automatica con il valore "textAutoCorrect".
Puoi combinare diversi comportamenti e stili di metodi di input con l'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 di ortografia:
<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 input
La maggior parte dei metodi di input software fornisce un pulsante di azione utente nell'angolo in basso 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 il 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 campo di testo, ad esempio Invia o Vai.
Per specificare il pulsante di azione della tastiera, utilizza l'
android:imeOptions
con un valore di azione come "actionSend" o "actionSearch". Ad esempio:
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 listener, 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 di completamento automatico
Se vuoi fornire suggerimenti agli utenti durante la digitazione, puoi utilizzare una sottoclasse di 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.
AutoCompleteTextView con testo
suggerimenti.La seguente procedura descrive come configurare un AutoCompleteTextView che fornisce suggerimenti da un array utilizzando ArrayAdapter:
- Aggiungi
AutoCompleteTextViewal 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" />
- 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>
- Nell'oggetto
ActivityoFragment, 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
ArrayAdapterper associare ogni elemento dell'array di stringhecountries_arraya unTextViewesistente nel layoutsimple_list_item_1. Si tratta di un layout fornito da Android che fornisce un aspetto standard per il testo in un elenco. -
Assegna l'adattatore a
AutoCompleteTextViewchiamandosetAdapter().