EditText aggiunto non è un TextInputEditText. Passa invece a utilizzare quella classe


93

Sto usando un EditTextinterno a TextInputLayout, ma dopo aver aggiornato la libreria di supporto alla 23.2.0, ricevo questo avviso nel logcat, qual è la differenza tra un normale EditTexte un TextInputEditText? Non riesco a trovare alcuna documentazione per questo.


Ho aggiornato la mia libreria di supporto alla 23.2.1 ma ancora TextInputEditText non può essere risolto nel mio codice . Come lo hai risolto?
Edijae Crusar

Risposte:


109

Mi stavo chiedendo anche questo, Daniel Wilson ha raccolto la documentazione, ma per un occhio inesperto non significa molto. Ecco di cosa si tratta: "modalità di estrazione" si riferisce al tipo di visualizzazione che viene mostrato quando lo spazio è troppo piccolo, ad esempio il paesaggio su un telefono. Sto usando Galaxy S4 con la tastiera Google come editor del metodo di input (IME).

Interfaccia utente orizzontale senza IME visibile

In base al focus (sulla Descrizione) puoi vedere TextInputLayoutin azione spingendo il suggerimento fuori dall'editor. Niente di speciale qui, questo è quello che TextInputLayoutdovrebbe fare.

Interfaccia utente orizzontale senza IME visibile

Modifica dell'interfaccia utente orizzontale nel campo Nome vuoto

Modificando il nome puoi vedere che l'IME non ti dà un indizio di ciò che stai modificando.

Modifica dell'interfaccia utente orizzontale nel campo Nome vuoto

Modifica dell'interfaccia utente orizzontale Campo Descrizione vuoto

Modificando la descrizione puoi vedere che l'IME ti dà un suggerimento di ciò che stai modificando.

Modifica dell'interfaccia utente orizzontale Campo Descrizione vuoto

XML di layout

La differenza tra i due campi è il loro tipo EditTextVS TextInputEditText. La cosa importante qui è che TextInputLayoutha l' android:hintEditText avvolto e non, questo è il caso in cui TextInputEditTextpoche righe di codice Java fanno una grande differenza.

Campo nome

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Name"
    >
    <EditText
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</android.support.design.widget.TextInputLayout>

Campo descrizione

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:minLines="4"
        android:scrollbars="vertical"
        />
</android.support.design.widget.TextInputLayout>

3
Ho aggiornato la mia libreria di supporto alla 23.2.1 ma ancora TextInputEditText non può essere risolto nel mio codice. Come lo hai risolto?
Edijae Crusar

Hai anche la libreria di design? Questo non è a sostegno.
TWiStErRob

1
Nota rapida: secondo i documenti, la android:hintproprietà dovrebbe entrare TextInputEditTextinvece di TextInputLayout.
DriesOeyen

1
@luxsypher ho finito per lasciarlo cadere e usare l'altro modo che è mettere EditText in un TextInputLayout
Edijae Crusar

1
@ jeet.chanchawat è un upcast, quindi è sicuro. Dovresti sempre utilizzare il tipo più generale che ti fornisce le funzionalità (= API) necessarie. L'utilizzo TextInputEditTextè un dettaglio di implementazione dell'interfaccia utente.
TWiStErRob

34

Non c'è documentazione per questo, ma la classe è regolare EditTextcon una singola funzionalità extra:

L'utilizzo di questa classe ci consente di visualizzare un suggerimento nell'IME quando è in modalità "estrazione".

Nello specifico imposta il EditorInfo.hintText. Noterai che nella TextInputLayoutclasse puoi specificare il suggerimento e il suo aspetto piuttosto che come parte del EditTextwidget figlio .

Se hai bisogno di farlo, dovresti usare un in TextInputEditTextmodo che presti attenzione alle informazioni di suggerimento che hai specificato nel TextInputLayout.


2
qualche esempio? Non ho idea di cosa stai suggerendo
behelit

4

Sono essenzialmente la stessa cosa, ma penso che TextInputEditTextabbiano più caratteristiche e possibilmente attributi. Ho cambiato in TextInputEditTexte tutto ha funzionato e sembrava come prima con lo standard EditText.


Uso già TextInputLayout, sto chiedendo un'alternativa all'EditText chiamata TextInputEditText
Silvia H

Scusa, stavo parlando di TextInputEditText ma ho detto layout. Ho modificato la risposta
Nick Mowen

0

L'unica differenza è che quando il tuo dispositivo è in modalità orizzontale, TextInputEditTextmostrerà il suggerimento, EditTextno.


-3

Ho avuto questo problema e ho appena cancellato questa riga nel mio file xml:

android: fitsSystemWindows = "true"

e l'errore è scomparso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.