J'essaie d'ajouter un saut de ligne dans le TextView.
J'ai essayé suggéré\n mais cela ne fait rien. Voici comment je règle mes textes.
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
Ceci est ma chaîne: <string name="sample_string">some test line 1 \n some test line 2</string>
Il devrait apparaître comme suit:
some test line 1
some test line 2
Mais cela se voit comme suit: some test line 1 some test line 2
.
Est-ce que je manque quelque chose?
ok l'a 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 sauts sont ajoutés à l'intérieur sous forme de balises html
\n
fonctionne pour moi, comme ceci:
<TextView Android:text="First line\nNext line"
Android version 1.6 ne reconnaît pas\r\n . Utilisez plutôt: System.getProperty ("line.separator")
String s = "Line 1"
+ System.getProperty ("line.separator")
+ "Line 2"
+ System.getProperty ("line.separator");
Les sauts de ligne (\ n) seulement travaillent si vous mettez la valeur de votre ressource chaîne entre guillemets comme ceci:
<string name="sample_string">"some test line 1 \n some test line 2"</string>
Cela 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.
J'ai essayé toutes les réponses ci-dessus, et quelques recherches ont également abouti à la solution suivante pour le rendu des caractères d'échappement de sauts de ligne:
string = string.replace("\\\n", System.getProperty("line.separator"));
En utilisant la méthode de remplacement, vous devez filtrer escaped linefeeds (par exemple, '\\ n')
Alors seulement, chaque instance de caractères de saut de ligne '\ n' est rendue dans le saut de ligne réel
Pour cet exemple, j'ai utilisé une base de données Google Apps Scripting noSQL (ScriptDb) avec des données au format JSON.
A la vôtre: D
Cela a fonctionné pour moi
Android:text="First \n Second"
Cela a fonctionné pour moi, peut-être que quelqu'un trouvera ceci 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 ceci .. Si vous utilisez votre chaîne comme chaîne brute, vous devez utiliser le caractère newline. Si vous l’utilisez en HTML, par exemple, en l’analysant avec Html.fromString
, .__, la deuxième variante est meilleure.
\n
<string name="sample> This\nis a sample</string>
<br>
ou <br />
<string name="sample> This<br>is a sample</string>
Utilisé Android Studio 0.8.9. La seule façon qui a fonctionné pour moi est d'utiliser \n
. Ni le wrapping avec CDATA, ni <br>
ni <br />
n'a fonctionné.
Si vous utilisez XML pour déclarer votre utilisation de TextView Android:singleLine = "false"
ou en Java, utilisez txtSubTitle.setSingleLine(false);
très facile: utilisez "\ n"
String aString1 = "abcd";
String aString2 = "1234";
mSomeTextView.setText(aString1 + "\n" + aString2);
\ n correspond à ASCII char 0xA, qui est 'LF' ou un saut de ligne
\ r correspond à ASCII char 0xD, qui est "CR" ou un retour chariot
cela remonte aux toutes premières machines à écrire, où vous pouvez choisir de ne faire qu'un saut de ligne (et de ne taper qu'une ligne plus bas), ou un saut de ligne + retour chariot (qui se place également au début d'une ligne)
sous Android/Java, le\n correspond à un retour chariot + saut de ligne, comme vous le feriez autrement "écraser" la même ligne
J'utilise les éléments suivants:
YOUR_TEXTVIEW.setText("Got some text \n another line");
Essayez de vérifier vos localisations. Possible, vous essayez d’éditer un fichier (localisation), mais programmez en utilisant un autre, comme dans mon cas La langue par défaut du système est le russe, alors que j'essaie de modifier la localisation anglaise.
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>
Aussi, vous pouvez ajouter "<br/>"
au lieu de\n.
C'est du code HTML échappé pour <br/>
Et ensuite, 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
est obsolète, j'ai simplement utilisé ce code pour obtenir String2 à 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;
}
Le moyen le plus simple de le faire est d’aller dans valeurs/chaînes (dans votre dossier de ressources).
Déclarez une chaîne ici:
<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 travaillait pas pour moi. J'ai pu résoudre le problème en modifiant le code XML en texte et en construisant la propriété textview textview comme ci-dessous.
Android:text="Line 1
Line 2
Line 3
DoubleSpace"
Espérons que cela aide ceux qui ont dit que\n ne travaillait pas pour eux.
Je lis mon texte depuis un fichier, j’ai donc adopté une approche légèrement différente, car l’ajout de\n au fichier a pour conséquence que\n apparaît 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());
J'ai trouvé une autre méthode: Il 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.
Peut-être que vous êtes capable de mettre le lf dans le texte, mais il ne s'affiche 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"
Dans mon cas, j'ai résolu ce problème en ajoutant ce qui suit:
Android:inputType="textMultiLine"