Różnica między setText () i append ()

Ciekawi mnie różnica, jaką tworzą setText () i append (). Piszę bardzo prosty edytor z numerami linii. Mam TextView do przechowywania numerów linii po lewej stronie, sparowany z EditText po prawej stronie, aby przechowywać dane. Oto 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>

Ignorując niektóre inne rzeczy, które robię, najciekawszą rzeczą, jaką natknąłem się, była dodatkowa przestrzeń, która pojawiła się, gdy użyłem append () (zakładając, że rzeczy zostały zainicjowane i tak dalej).

Poniżej, w połączeniu z XML, ustawia kolorową granicę między TextView i EditText.

theEditor = (EditText) findViewById(R.id.editor);
lineNumbers = (TextView) findViewById(R.id.line_numbers);
theLineCount = theEditor.getLineCount();
lineNumbers.setText(String.valueOf(theLineCount)+"\n");

Zmień jednak ostatnią linię na tę i nagle każda linia w TextView ma dopełnienie po prawej stronie przed EditText.

lineNumbers.append(String.valueOf(theLineCount)+"\n");

To nie jest koniec świata. ale byłem ciekaw, co spowodowało to zachowanie. Ponieważ jestem nowicjuszem w tym języku, jedyną rzeczą, o której mogłem myśleć, może być to, że kiedy dodasz do tego Editable, dodaje dopełnienie. Jeśli mogę uzyskać odpowiedź, mogę zastąpić wszystkie te nieprzyjemne linie prostszymi załącznikami:

lineNumbers.setText(lineNumbers.getText().toString()+String.valueOf(newLineCount)+"\n");

questionAnswers(5)

yourAnswerToTheQuestion