Ist das xml-Attribut singleLine in Android veraltet oder nicht?
singleLine
ist/war in xml-layout-Dateien für TextView
und EditText
so etwas wie die folgenden:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true" />
Manche Menschen SO sagen singleLine
ist veraltet, während andere Menschen noch empfehlen, es zu verwenden. Manchmal scheint es sogar notwendig zu verwenden, wenn maxLines="1"
funktioniert nicht. (siehe hier, hier, und hier)
Den docs sollte der Ort zu gehen, um diese Frage zu beantworten, richtig? Hier, sagen Sie:
Diese Konstante war veraltet in der API-Ebene 3.
Dieses Attribut ist
veraltet. VerwendenmaxLines
stattdessen ändern Sie das layout einer statischen
text, und verwenden Sie dietextMultiLine
- flag in der inputType Attribut
statt für Bearbeitbare text-Ansichten (wenn beide einpolig und inputType sind
geliefert, die inputType flags überschreiben Sie den Wert von "singleLine").
Jedoch in der TextView-docs, gibt es keinen Hinweis, dass es veraltet ist, entweder für android:singleLine
oder für setSingleLine
oder für setTransformationMethod
. Das gleiche TextView-docs, durch Vergleich, Stand, die anderen Dinge wie STATUS_BAR_HIDDEN
und fitSystemWindows
veraltet sind. So ist die singleLine
Missbilligung Unterlassung, war es "undeprecated", oder was?
Diese Frage wurde vorher gefragt, bevor war aber nicht der Schwerpunkt der Frage (und nicht beantwortet).
code
- block für die Fälle? maxLines="1"
angeblich nicht funktioniert. (Es könnte sein, dass es wirklich funktioniert in jedem Fall.) Ich möchte nur wissen, wenn einpolig
ist wirklich veraltet oder nicht. That being said, ich habe keine maßgebliche Beispiele aber finden Sie in der ellipsize="marquee"
- Teil der Antwort und diese F&A und auch diese Antwort mit Kommentaren. TextView
s in ViewPager
und der pager nicht auf Berührung reagieren schieben events, wenn ich slided mit dem finger über das TextView
en. Aber wenn ich das geändert, Attribut maxLines=1, alles ok! InformationsquelleAutor der Frage Suragch | 2015-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die Antwort auf Ihre Frage bereits in einer der SO Beiträge, die Sie verlinkt. Leider ist die Streichung von
singleLines
ist keine schwarz-oder-weiß-Frage.Es ist veraltet, aber es ist nicht going anywhere anytime soon.
Es war veraltet, weil seine Leistung ist schlecht, relativ zu seinem Nachfolger
maxLines
. Es nutztSingleLineTransformationMethod
zu ersetzen, newlines und carriage-returns in der Zeichenfolge, die Sie in derTextView
im Gegensatz zumaxLines
, die "nur" passt die Höhe derTextView
basierend auf der Anzahl der Zeilen und keinen String zu ersetzen.Diese Methode zum ersetzen von Zeichen bedeutete auch, dass
singleLine
könnte Pause auf unerwartete Weise (z.B. wenn Sie eigene Schriften verwenden). Es war diese Leistungs-und Zuverlässigkeitsprobleme, dass führte zu seiner Missbilligung.Jedoch es wird nicht überall hingehen, weil, wie das SO posten Sie im Zusammenhang mit Staaten, ist es immer noch von vielen alten Android-Anwendungen, und es ist immer noch nützlich, manchmal (z.B. wenn Sie zeigen möchten, die gesamte text auf einer Linie und ignorieren carriage-returns und newlines).
Tun, beachten Sie, dass die Missbilligung muss nicht unbedingt bedeuten, dass eine API ist Weg. Es bedeutet nur, dass Ihre Nutzung ist nicht erwünscht, aber zulässig.
InformationsquelleAutor der Antwort ugo
Das deprecated-Attribut wurde Hinzugefügt, ändern d24b8183b9 das ist nichts anderes als ein Auszug aus der Google-interne SCM:
Wie gesehen werden kann, aus der Veränderung
core/res/res/values/attrs.xml
diff fügt das @deprecated doc-Kommentar, abercore/java/android/widget/TextView.java
diff ändert sich nicht alles vonsetSingleLine()
's doc-Kommentar.Heute ohne Zugang zu Google-interne SCM Geschichte, es ist nicht möglich zu wissen, was genau die Ursache oben genannten änderung in
attrs.xml
doc-Kommentar, aber deine Frageeine mögliche Antwort ist:
TextView
's single-line war weder veraltet, noch "undeprecated", aber es wurde verbessert, um zu berücksichtigen, ob die Aussicht ist editierbar, ein Passwort-Feld oder benutzt irgendeine andere input type flag, das betrifft Einzel - /multi-lineness.InformationsquelleAutor der Antwort ozbek
In der offiziellen grepcode von
TextView
(v5.1.0 r1) :android:singleLine
ist nicht versehen mit@Deprecated
.Sehe ich auch in
setInputType
Methode:setInputType
überschreibt diemSingleLine
Wert so.BEARBEITEN :
Dieses xml-Attribut ist nun offiziell veraltet. (da API-3?). Es ist jetzt sichtbar, in AndroidStudio xml-editor.
InformationsquelleAutor der Antwort Täg
singleLine
IST veraltet. Keine Diskussion erforderlich.Das problem ist nur die falsche Dokumentation.
"verwenden Sie die
textMultiLine
- flag in derinputType
- Attribut für Bearbeitbare text-Ansichten" ist das direkte Gegenteil von dem, was Sie erreichen wollen, indem Sie mitsingleLine
.Anstatt, dass Sie verwenden können,
android:inputType="text"
.Für mich ist es genau das Tat, was ich wollte - ein Bearbeiten mit einer einzigen Zeile ohne Zeilenumbrüche.
InformationsquelleAutor der Antwort The incredible Jan
Dachte nur, ich 'll hinzufügen, dass Android Studio 2.2.1 flags "singleLine", als veraltet.
Allerdings, was ich gefunden habe ist, dass in meinem Beispiel:
gut funktioniert, in der Erwägung, dass
nicht.
InformationsquelleAutor der Antwort Seb
Während Android-Studio behauptet, dass es veraltet ist, in Wirklichkeit mussten wir einen text Bearbeiten, das ermöglichen sollte, sich selbst zu sein, nur einspurig.
Hinzufügen
maxLines="1"
machte es ermöglichen, neue-Zeile-Zeichen, was nicht für unsere Bedürfnisse geeignet.Also gingen wir zurück zu
singleLine="true"
.InformationsquelleAutor der Antwort EpicPandaForce
Ich habe gerade
android:inputType="text"
und entferntandroid:maxLines="1"
es funktionierte gut für mich.InformationsquelleAutor der Antwort Divya
Nur für das hinzufügen von ein paar mehr Informationen zu der Diskussion, Fussel hat nun die folgende Fehlermeldung:
"Die Kombination
ellipsize
undmaxLines=1
können, führen zu Abstürzen auf einigen Geräten. Frühere Versionen von lint empfohlen ersetztsingleLine=true
mitmaxLines=1
aber das sollte nicht getan werden, wenn mitellipsize
.Mehr info: https://issuetracker.google.com/issues/36950033"
So, ich denke, dass
singleLine
ist jetzt, und ich denke, wir sollten einen neuen Begriff... "deprecatedish"?InformationsquelleAutor der Antwort Rui
Nur die Bereitstellung
android:maxLines="1"
undandroid:minLines="1"
nicht lösen das Problem der TastaturactionNext
zusammenhängen. Verwendenandroid:inputType="text"
für die gleichen.InformationsquelleAutor der Antwort oj24031989
Einfache Alternative Weise verwenden:
android:maxLines="1"
InformationsquelleAutor der Antwort Sanat Chandravanshi