Comment ajouter un saut de ligne dans un TextView Android?
J'essaie d'ajouter un saut de ligne dans le TextView.
J'ai essayé suggéré n mais cela ne fait rien. Voici comment j'ai réglé mes textes.
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
C'est ma Chaîne: <string name="sample_string">some test line 1 n some test line 2</string>
Il devrait montrer comme ceci:
some test line 1
some test line 2
, Mais il montre comme ceci: some test line 1 some test line 2
.
Est-ce que je manque quelque chose?
21 réponses
\n
fonctionne pour moi, comme ceci:
<TextView android:text="First line\nNext line"
Ok compris:
<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
Donc envelopper dans CDATA est nécessaire et les pauses ajoutées à l'intérieur en tant que balises html
Merci à tous pour votre aide!
Android version 1.6 ne reconnaît pas \r \ n. Au lieu de cela, utilisez: System.getProperty ("ligne.séparateur")
String s = "Line 1"
+ System.getProperty ("line.separator")
+ "Line 2"
+ System.getProperty ("line.separator");
Les sauts de ligne (\n) seulement fonctionnent si vous mettez votre valeur de Ressource de chaîne entre guillemets comme ceci:
<string name="sample_string">"some test line 1 \n some test line 2"</string>
Il ne fera pas de sauts de ligne si vous le mettez sans guillemets comme ceci:
<string name="sample_string">some test line 1 \n some test line 2</string>
Oui, c'est aussi simple que ça.
Essayé tout ce qui précède, fait quelques recherches de mon propre résultant dans la solution suivante pour le rendu des caractères d'échappement linefeed:
string = string.replace("\\\n", System.getProperty("line.separator"));
En utilisant la méthode replace, vous devez filtrer échappés linefeeds (par exemple '\ \ n')
-
Ce n'est qu'alors que chaque instance de caractères d'échappement '\n' de saut de ligne est rendue dans le saut de ligne réel
Pour cet exemple, j'ai utilisé une base de données NoSQL de script Google Apps (ScriptDb) avec des données au format JSON.
Cheers : D
Cela a fonctionné pour moi, peut-être que quelqu'un trouvera cela utile:
TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
Il y a deux façons de contourner cela.
Si vous utilisez votre chaîne comme une chaîne brute, vous devez utiliser la nouvelle ligne
caractère. Si vous l'utilisez en html, par exemple en l'analysant avec Html.fromString
,
la deuxième variante est mieux.
1) caractère de retour à la ligne \n
<string name="sample> This\nis a sample</string>
2) balise de nouvelle ligne Html <br>
ou <br />
<string name="sample> This<br>is a sample</string>
Utilisé Android Studio 0.8.9. La seule façon de travailler pour moi est d'utiliser \n
.
Ni l'emballage avec CDATA, ni <br>
ou <br />
n'a fonctionné.
Si vous utilisez XML pour déclarer votre TextView use android:singleLine = "false"
ou en Java, utilisez txtSubTitle.setSingleLine(false);
J'utilise ce qui suit:
YOUR_TEXTVIEW.setText("Got some text \n another line");
Très facile: utiliser "\n "
String aString1 = "abcd";
String aString2 = "1234";
mSomeTextView.setText(aString1 + "\n" + aString2);
\N correspond à ASCII char 0xA, qui est 'LF' ou saut de ligne
\R correspond à ASCII char 0xD, qui est ' CR ' ou retour chariot
Cela date des toutes premières machines à écrire, où vous pouvez choisir de ne faire qu'un saut de ligne (et taper juste une ligne plus bas), ou un saut de ligne + retour chariot (qui se déplace également au début d'une ligne)
Sur Android / java, le \N correspond à un retour chariot + saut de ligne, comme vous le feriez sinon, il suffit de "remplacer" la même ligne
Essayez de vérifier vos localisations. Possible, vous essayez d'éditer un fichier (localisation), mais en fait programme en utilisant un autre, tout comme dans mon cas. La langue du système par défaut est le russe, alors que j'essaie de modifier la localisation en anglais.
Dans mon cas, la solution de travail consiste à utiliser "\n " comme séparateur de ligne:
<string name="string_one">line one.
\nline two;
\nline three.</string>
Vous pouvez Également ajouter "<br/>"
au lieu de \n.
C'est du code HTML échappé pour
Et puis vous pouvez ajouter du texte à TexView:
articleTextView.setText(Html.fromHtml(textForTextView));
Vous pouvez également utiliser L'éditeur de chaînes D'Android Studio, il génère automatiquement des freins de ligne et des choses comme ça...
Comme Html.fromHtml
obsolète, j'ai simplement utilisé ce code pour obtenir String2 dans la ligne suivante.
textView.setText(fromHtml("String1 <br/> String2"));
.
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
Spanned result;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(html);
}
return result;
}
J'ai trouvé une autre méthode: Est nécessaire d'ajouter l'attribut"android:maxWidth="40dp" ". Bien sûr, cela peut ne pas fonctionner parfaitement, mais cela donne un saut de ligne.
Le moyen le plus facile de le faire est d'aller à values/strings (dans votre dossier de ressources)
Déclarer une chaîne:
<string name="example_string">Line 1\Line2\Line n</string>
Et dans votre fichier xml spécifique, appelez simplement la chaîne comme
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/example_string" />
\n ne fonctionnait pas pour moi. J'ai pu résoudre le problème en changeant le xml en texte et en construisant la propriété textview text comme ci-dessous.
android:text="Line 1
Line 2
Line 3
DoubleSpace"
Espérons que cela aide ceux qui ont dit que \n ne fonctionnait pas pour eux.
Je lis mon texte à partir d'un fichier, donc j'ai pris une légèrement approche différente, puisque l'ajout de \n au fichier a entraîné \n apparaissant dans le texte.
final TextView textView = (TextView) findViewById(R.id.warm_up_view);
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
while (scanner.hasNextLine()) {
sb.append(scanner.nextLine());
sb.append("\n");
}
textView.setText(sb.toString());
Peut-être que vous êtes capable de mettre le lf dans le texte, mais il ne s'affiche pas? Assurez-vous que vous avez assez de hauteur pour le contrôle. Par exemple:
Correct:
android:layout_height="wrap_content"
Peut être faux:
android:layout_height="10dp"