Unterschied zwischen setText() und append()
Bin ich neugierig auf den Unterschied setText() und append() erstellen. Ich Schreibe sehr basic-editor mit Zeilennummern. Ich habe eine TextView zu halten Zeilennummern auf der linken Seite, gepaart mit einem EditText auf der rechten Seite, um die Daten aufzunehmen. Hier die XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top">
<TextView
android:id="@+id/line_numbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="0dip"
android:gravity="top"
android:textSize="14sp"
android:textColor="#000000"
android:typeface="monospace"
android:paddingLeft="0dp"/>
<EditText
android:id="@+id/editor"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="text|textMultiLine|textNoSuggestions"
android:imeOptions="actionNone"
android:gravity="top"
android:textSize="14sp"
android:textColor="#000000"
android:typeface="monospace"/>
</LinearLayout>
Ignorieren einige der anderen Dinge, die ich Tue, die neugierigste Sache, die ich stieß, war der zusätzliche Abstand, der auftauchte, wenn ich append() (vorausgesetzt, die Dinge haben sich seit initialisiert und alles, was).
Unten, in Kombination mit XML-Daten-sets, einen flush Grenze zwischen den TextView und EditText.
theEditor = (EditText) findViewById(R.id.editor);
lineNumbers = (TextView) findViewById(R.id.line_numbers);
theLineCount = theEditor.getLineCount();
lineNumbers.setText(String.valueOf(theLineCount)+"\n");
Ändern Sie die Letzte Zeile in diesem, obwohl, und plötzlich jede Zeile in der TextView-Polsterung auf der rechten Seite vor dem EditText.
lineNumbers.append(String.valueOf(theLineCount)+"\n");
Es ist nicht das Ende der Welt. aber ich war neugierig, was verursacht dieses Verhalten. Da ich neu bin, die Sprache, das einzige, was ich denken konnte, war vielleicht, wenn append wirft die Bearbeitbare auf, es fügt die Polsterung. Wenn ich eine Antwort bekommen, ich bekomme zu ersetzen, die alle diese fiesen Linien mit einfacher anfügt:
lineNumbers.setText(lineNumbers.getText().toString()+String.valueOf(newLineCount)+"\n");
InformationsquelleAutor CJ Harries | 2013-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich das ändern BufferType BEARBEITBARE durch die append-Methode verursacht die unerwartete Polsterung.
Wenn Sie möchten, verwenden Sie die append-Methode anstelle der setText-Methode, und entfernen Sie die Polsterung,
können Sie versuchen, entfernen Sie es, indem Sie mit
oder hinzufügen dieser Zeile in dein textview in der xml-Datei
Hoffe, das hilft.
InformationsquelleAutor SLee
Zeilennummern haben "Es ist test,". Nach, dass, wenn Sie setText wieder, text völlig verändern wird
Nach, dass, wenn Sie verwenden Sie Anhängen, mal sehen was passieren wird..
//Hier nicht verlieren Zeilennummern text.. Es wird so sein
"Es ist der zweite test,Es ist der Dritte test"
InformationsquelleAutor Emre Koç
setText():
Zerstört den Puffer-Inhalt, indem Sie die text gesetzt werden.append():
Fügt einen text in einen Puffer und druckt anschließend das Ergebnis.Beispiel:
example.setText("Hello");
drucken würde Hallo auf den Ausgang Bildschirm. Wenn Sie dann ausführenexample.append("World");
Sie erhalten würden, "HelloWorld" als Ausgabe.InformationsquelleAutor VikramV
setText
wird, ersetzen Sie den vorhandenen text mit dem neuen text.Anhängen wird, halten Sie die alt-text und fügen Sie die neue mehr wie verketten.
InformationsquelleAutor minhaz
Der grundlegende Unterschied ist, dass
setText()
ersetzt den text aus der bestehenden undappend()
wird Ihr neuer Wert zu den bestehenden. Hoffe, dass ich geholfen habe.InformationsquelleAutor Fokou Franklin