L'attributo xml singleLine è obsoleto o non in Android?

singleLine è / è stato utilizzato nei file di layout xml per TextView e EditText qualcosa di simile al seguente:

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" /> 

Alcune persone su SO dicono singleLine è deprecata, mentre altre persone ancora suggeriscono di utilizzarlo. A volte sembra anche necessario utilizzare quando maxLines="1" non funziona. (vedi qui , qui e qui )

  • Visualizzazione della data nel numero di 24 ore
  • come get l'elenco di events del calendario del dispositivo in dispositivi android?
  • Mostra schermata di anteprima in nero nel task manager in ICS
  • Android modifica l'icona dell'applicazione in modo programmato
  • Android - Specificare specificamente l'altezza e la width del nuovo ScrollView
  • Eccezione nel layout di caricamento: java.util.LinkedHashMap.eldest () Ljava / util / Map $ Entry;
  • I docs dovrebbero essere il posto where andare a rispondere a questa domanda, giusto? Qui, dicono:

    Questa costante è stata deprecata nel livello API 3.

    Questo attributo è deprecato. Utilizzare invece maxLines per modificare il layout di un text statico e utilizzare invece la textMultiLine flag di textMultiLine nell'attributo inputType invece che per le visualizzazioni di text modificabili (se vengono fornite sia singoleLine che inputType, i flag inputType sovrascrivono il valore di singleLine).

    Tuttavia, nei documenti di TextView , non vi è alcuna indicazione che sia deprecata, sia per android:singleLine o per setSingleLine o per setTransformationMethod . Gli stessi documenti di TextView, per confronto, dichiarano che altre cose come STATUS_BAR_HIDDEN e fitSystemWindows sono obsolete. Così è l'omelezione della singola Linea una omissione, è stata "non recuperata", o cosa?

    Questa domanda è stata precedentemente richiesta ma non è stata la messa a fuoco principale della domanda (e non è stata risposta).

  • Errore java.lang.ClassNotFoundException: com.google.android.gms.maps.Fragment di fotoricettore in Google Map V2
  • Crea il layout con il button AndroidView CardView e l'azione di galleggiamento
  • Basta aggiornare un widget RemoteViews anziché completamente creare una nuova?
  • Android Studio: UNEXPECTED TOP-LEVEL EXCEPTION:
  • Errore di rendering IDEA di IntelliJ
  • Come sapere il momento in cui la persona chiamata prende il suo telefono
  • 8 Solutions collect form web for “L'attributo xml singleLine è obsoleto o non in Android?”

    Penso che la risposta alla tua domanda sia già in uno dei post di SO collegati . Purtroppo, la depreazione di singleLines non è una materia in bianco e nero.

    E ' deprecata, ma non va da nessuna parte in qualunque momento.

    E 'stato deprecato perché la sua performance è scarsa, rispetto al suo successore, maxLines . Utilizza SingleLineTransformationMethod per sostituire le righe e le restituzioni di carriage nella String che inserisci nel TextView , a differenza di maxLines , che "appena" regola l'altezza del TextView base al numero di righe e non sostituisce String.

    Questo metodo di sostituzione dei caratteri significava anche che singleLine potrebbe rompersi in modi inaspettati (ad esempio se si utilizzano caratteri personalizzati). Erano questi problemi di performance e affidabilità che hanno portto alla sua depreazione.

    Tuttavia, non va da nessuna parte perché , come il messaggio di posta elettronica collegato agli stati, è ancora in uso da molte vecchie applicazioni Android, ed è ancora utile a volte (ad esempio quando si desidera visualizzare l' integer text in una row e ignorare carriage-returns e newlines).

    Tieni presente che la depreazione non significa necessariamente che un'API sia andata via. Significa solo che il suo utilizzo è scoraggiato, ma può essere permesso.

    L'attributo deprecato è stato aggiunto nella modifica d24b8183b9, che non è altro che un dump di Google SCM interno:

    importzione automatica da //branches/cupcake/…@130745

    Come si può vedere dal cambiamento di core/res/res/values/attrs.xml diff aggiunge il commento doc core/res/res/values/attrs.xml , ma il core/java/android/widget/TextView.java diff non modifica nulla dal setSingleLine() di setSingleLine() commento.

    Ora, senza accesso alla storia interna di SCM di Google, non è ansible sapere cosa esattamente ha causato la modifica del commento di doc attrs.xml , ma per la tua domanda

    Così è l'omelezione della singola Linea una omissione, è stata "non recuperata", o cosa?

    una sola risposta è: la singola row di TextView non è stata né deprecata né "non recuperata" ma è stata migliorata per tener conto se la vista è modificabile, un field di password o utilizza qualsiasi altro tipo di flag di input che influisce sul singolo / lineness.

    Nel codice grepcode ufficiale di TextView (v5.1.0 r1):

    android:singleLine non è annotato con @Deprecated .

    Lo vedo anche nel metodo setInputType :

     boolean singleLine = !isMultilineInputType(type); // We need to update the single line mode if it has changed or we // were previously in password mode. if (mSingleLine != singleLine || forceUpdate) { // Change single line mode, but only change the transformation if // we are not in password mode. applySingleLine(singleLine, !isPassword, true); } 

    setInputType sovrascrive il valore mSingleLine così.

    EDIT: Questo attributo xml è ora ufficialmente deprecato. ( da API 3? ). Ora è visibile in Editor di AndroidStudio xml.

    singleLine IS è deprecata. Non è stata necessaria alcuna discussione.

    L'unico problema è la documentazione sbagliata.
    "utilizzare la bandiera inputType nell'attributo inputType invece per le visualizzazioni di text modificabili" è il contrario diretto di ciò che si desidera get utilizzando singleLine .

    Invece puoi usare android:inputType="text" .
    Per me ha fatto esattamente quello che volevo – una modifica con una singola linea senza interruzioni di linea.

    Ho appena pensato di aggiungere che Android Studio 2.2.1 flags singleLine come deprecato. Tuttavia, quello che ho trovato è che nel mio caso:

     android:singleLine="false" 

    funziona bene, mentre

     android:maxLines="2" 

    non.

    Mentre Android Studio sostiene che è deprecata, in realtà abbiamo avuto un text di modifica che dovrebbe consentire di essere solo una row singola.

    L'aggiunta di maxLines="1" ha permesso di consentire caratteri newline, che non sono adatti alle nostre esigenze.

    Quindi siamo tornati ad usare singleLine="true" .

    Ho appena aggiunto android:inputType="text" e rimosso android:maxLines="1" , ha funzionato bene per me.

    Modo semplice alternativo, uso: android:maxLines="1"

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.