plain - android textview text size




Ist das XML-Attribut singleLine in Android veraltet oder nicht? (7)

singleLine wird / wurde in XML-Layoutdateien für TextView und EditText wie folgt verwendet:

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

Einige Leute auf SO sagen, singleLine sei veraltet, während andere immer noch vorschlagen, es zu verwenden. Manchmal scheint es sogar notwendig zu sein, wenn maxLines="1" nicht funktioniert. (siehe here , here und here )

Die Dokumentation sollte der Ort sein, an dem Sie diese Frage beantworten können, oder? Hier heißt es:

Diese Konstante wurde in API-Level 3 verworfen.

Dieses Attribut ist veraltet. Verwenden maxLines stattdessen maxLines , um das Layout eines statischen Texts zu ändern, und verwenden textMultiLine stattdessen das textMultiLine Flag im inputType-Attribut für bearbeitbare Textansichten (wenn sowohl singleLine als auch inputType angegeben werden, überschreiben die inputType-Flags den Wert von singleLine).

In den TextView-Dokumenten gibt es jedoch keinen Hinweis darauf, dass es veraltet ist, weder für android:singleLine noch für setSingleLine oder für setTransformationMethod . Dieselben TextView-Dokumente besagen im Vergleich, dass andere Dinge wie STATUS_BAR_HIDDEN und fitSystemWindows veraltet sind. singleLine die singleLine Abschreibung also eine Auslassung, war sie "undeprecated", oder was?

Diese Frage wurde bereits zuvor gestellt, stand jedoch nicht im Mittelpunkt der Frage (und wurde auch nicht beantwortet).


Das veraltete Attribut wurde in der Änderung d24b8183b9 hinzugefügt, die nichts anderes als ein Dump von Googles internem SCM ist:

Automatischer Import von //branches/cupcake/[email protected]

Wie aus der Änderung core/res/res/values/attrs.xml fügt core/res/res/values/attrs.xml diff den @deprecated doc-Kommentar hinzu, aber core/java/android/widget/TextView.java diff ändert nichts am setSingleLine() von setSingleLine() Kommentar.

Ohne Zugriff auf den internen SCM-Verlauf von Google ist es jetzt nicht möglich zu wissen, was genau die oben genannte Änderung im attrs.xml Dokumentkommentar verursacht hat, sondern für Ihre Frage

singleLine die singleLine Abschreibung also eine Auslassung, war sie "undeprecated", oder was?

Eine mögliche Antwort lautet: TextView war weder veraltet noch "nicht veraltet". Es wurde jedoch erweitert, um zu berücksichtigen, ob die Ansicht bearbeitbar ist, ein Kennwortfeld enthält oder ein anderes Flag für den Eingabetyp verwendet, das sich auf Einzel- / Mehrfacheingaben auswirkt. Reinheit.


Einfacher alternativer Weg, benutze: android:maxLines="1"


Ich denke, die Antwort auf Ihre Frage befindet sich bereits in einem der SO- Posts, mit denen Sie verlinkt sind . Leider ist die Abwertung von singleLines keine Schwarz-Weiß-Angelegenheit.

Es ist veraltet, aber es wird nicht so schnell irgendwohin gehen.

Es wurde verworfen, weil seine Leistung im Vergleich zu seinem Nachfolger maxLines schlecht ist. Es verwendet SingleLineTransformationMethod , um Zeilenumbrüche und Zeilenumbrüche in der SingleLineTransformationMethod zu ersetzen, die Sie in der TextView , im Gegensatz zu maxLines , das die Höhe der TextView "nur" anhand der Anzahl der Zeilen anpasst und keine TextView ersetzt.

Diese Methode zum Ersetzen von Zeichen führte auch dazu, dass singleLine auf unerwartete Weise singleLine konnte (z. B. wenn Sie benutzerdefinierte Schriftarten verwendeten). Es waren diese Leistungs- und Zuverlässigkeitsprobleme, die zu seiner Abwertung führten.

Es führt jedoch zu nichts , da der SO-Beitrag, den Sie verlinkt haben, von vielen alten Android-Anwendungen noch verwendet wird und manchmal auch noch nützlich ist (z. B. wenn Sie den gesamten Text in einer Zeile anzeigen und ignorieren möchten) Wagenrücklauf und Zeilenvorschub).

Beachten Sie, dass Verfall nicht unbedingt bedeutet, dass eine API nicht mehr verfügbar ist. Dies bedeutet lediglich, dass von seiner Verwendung abgeraten wird, diese jedoch zulässig sein kann.


Ich habe gerade android:inputType="text" hinzugefügt und android:maxLines="1" , es hat für mich gut funktioniert.


Nur android:maxLines="1" und android:minLines="1" bereitstellen, wird das Problem mit der Tastaturaktion nicht actionNext Problem. Verwenden Sie android:inputType="text" für das gleiche.


Um der Diskussion weitere Informationen hinzuzufügen, wird in Lint nun der folgende Fehler angezeigt:

"Das Kombinieren von ellipsize und maxLines=1 kann auf einigen Geräten zu Abstürzen führen. In früheren Versionen von lint wurde empfohlen, singleLine=true durch maxLines=1 ersetzen, dies sollte jedoch bei Verwendung von ellipsize nicht erfolgen.

Weitere Informationen: https://issuetracker.google.com/issues/36950033 "

Also, ich denke, singleLine ist jetzt und ich denke, wir sollten einen neuen Begriff finden ... "veraltet"?


singleLine veraltet. Keine Diskussion nötig.

Das einzige Problem ist die falsche Dokumentation.
"Verwenden textMultiLine stattdessen das textMultiLine Flag im inputType Attribut für bearbeitbare inputType " ist das direkte Gegenteil von dem, was Sie mit singleLine erreichen singleLine .

Stattdessen können Sie android:inputType="text" .
Für mich hat es genau das getan, was ich wollte - eine Bearbeitung mit einer einzelnen Zeile ohne Zeilenumbrüche.





android-singleline