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

Schreibe einen Kommentar