I'm curious about the difference setText() and append() are creating. I'm writing a very basic editor with line numbers. I have a TextView to hold line numbers on the left, paired with an EditText on the right to hold the data. Here's the 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>
Ignoring some of the other things I'm doing, the most curious thing I came across was the extra spacing that showed up when I used append() (assuming things have been initialized and all that).
This below, in combination with the XML, sets a flush border between the TextView and EditText.
theEditor = (EditText) findViewById(R.id.editor);
lineNumbers = (TextView) findViewById(R.id.line_numbers);
theLineCount = theEditor.getLineCount();
lineNumbers.setText(String.valueOf(theLineCount)+"\n");
Change the last line to this, though, and suddenly each line in the TextView has padding on the right before the EditText.
lineNumbers.append(String.valueOf(theLineCount)+"\n");
It's not the end of the world. but I was curious what was causing this behavior. Since I'm new to the language, the only thing I could think of was maybe, when append throws the Editable on there, it adds the padding. If I can get an answer, I get to replace all of these nasty lines with simpler appends:
lineNumbers.setText(lineNumbers.getText().toString()+String.valueOf(newLineCount)+"\n");
lineNumbers will have "It is test,". After that, if you use setText again, text will completely change
After that, if you use append, lets see what will happen..
// Here you will not lose lineNumbers text.. It will be like this "It is second test,It is third test"
I think changing BufferType to EDITABLE by append method caused the unexpected padding. If you want to use append method instead of setText method and remove that padding,
you can try to remove it by using
or adding this line to your textview in your xml file
Hope this helps.
The basic difference is that
setText()
replaces all the text from the existing one andappend()
adds your new value to existing one. Hope i helped.setText():
Destroys the buffer content by filling the text to be set.append():
Adds a text to a buffer and then prints the result.Example:
example.setText("Hello");
would print Hello on the output screen. If you then executeexample.append("World");
you would get HelloWorld as the output.setText
will replace the existing text with new text.append will keep the old text and add the new one more like concatenating.