Différence entre setText () et append ()
Je suis curieux de savoir la différence setText() et append() de la création. Je suis en train d'écrire un très basic editor avec les numéros de ligne. J'ai un TextView pour contenir les numéros de ligne sur la gauche, de pair avec un EditText sur le droit d'organiser les données. Voici le 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>
Ignorer certaines des autres choses que je fais, le plus curieux de la chose, je suis tombé sur l'espacement supplémentaire qui est apparu lorsque j'ai utilisé append() (en supposant que les choses ont été initialisé et tout le reste).
Ci-dessous, en combinaison avec le XML, définit une couleur de la frontière entre le TextView et EditText.
theEditor = (EditText) findViewById(R.id.editor);
lineNumbers = (TextView) findViewById(R.id.line_numbers);
theLineCount = theEditor.getLineCount();
lineNumbers.setText(String.valueOf(theLineCount)+"\n");
Modifier la dernière ligne de ce, bien que, et du coup, chaque ligne dans le TextView rembourrage sur la droite, avant le EditText.
lineNumbers.append(String.valueOf(theLineCount)+"\n");
C'est pas la fin du monde. mais j'étais curieux de savoir ce qui a été à l'origine de ce comportement. Depuis que je suis nouveau à la langue, la seule chose que je pouvais penser était peut-être, lors de l'ajout de jette, le Modifiable, il ajoute le rembourrage. Si je peux obtenir une réponse, je reçois à remplacer toutes ces vilaines lignes simples ajoute:
lineNumbers.setText(lineNumbers.getText().toString()+String.valueOf(newLineCount)+"\n");
source d'informationauteur CJ Harries | 2013-10-14
Vous devez vous connecter pour publier un commentaire.
Je pense que changer BufferType MODIFIABLE par la méthode append causés à l'inattendu rembourrage.
Si vous souhaitez utiliser la méthode append au lieu de la méthode setText et retirer le rembourrage,
vous pouvez essayer de le supprimer en utilisant
ou d'ajouter cette ligne à votre textview dans votre fichier xml
Espère que cette aide.
numéros de lignes auront "C'est le test,". Après cela, si vous utilisez setText de nouveau, texte va complètement changer
Après cela, si vous utilisez ajout, permet de voir ce qui va arriver..
//Ici, vous ne perdra pas numéros de lignes de texte.. Il sera comme ceci
"C'est la deuxième test,Il est le troisième test"
setText():
Détruit le contenu de la mémoire, remplissez le texte à définir.append():
Ajoute un texte à un tampon, puis imprime le résultat.Exemple:
example.setText("Hello");
serait d'imprimer Bonjour, sur l'écran de sortie. Si vous exécutez alorsexample.append("World");
vous obtenez HelloWorld que la sortie.setText
va remplacer le texte existant par le nouveau texte.ajouter vais garder l'ancien texte et l'ajout de la nouvelle plus comme la concaténation.
La différence fondamentale est que
setText()
remplace tout le texte à partir de l'existant etappend()
ajoute votre nouvelle valeur à l'existant. Espère que j'ai aidé.