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?

127
demandé sur Janusz 2011-03-21 22:20:22

21 réponses

\n fonctionne pour moi, comme ceci:

<TextView android:text="First line\nNext line"
182
répondu RonN 2017-08-27 09:44:08

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!

80
répondu dropsOfJupiter 2011-03-21 22:33:12

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");
63
répondu Eric JOYÉ 2012-05-12 18:09:25

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.

55
répondu datayeah 2012-03-07 02:13:44

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"));
  1. En utilisant la méthode replace, vous devez filtrer échappés linefeeds (par exemple '\ \ n')

  2. 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

27
répondu Robert 2014-05-03 01:32:48

Cela a fonctionné pour moi

android:text="First \n Second"
16
répondu Aniruddha 2014-05-06 06:09:11

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");
14
répondu Zeljko Ivanovic 2013-12-27 23:09:09

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>
14
répondu poitroae 2014-03-25 14:37:52

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é.

9
répondu Maxim Berezovsky 2014-09-24 04:31:46

Si vous utilisez XML pour déclarer votre TextView use android:singleLine = "false" ou en Java, utilisez txtSubTitle.setSingleLine(false);

8
répondu strange quark 2011-03-21 19:26:36

J'utilise ce qui suit:

YOUR_TEXTVIEW.setText("Got some text \n another line");
8
répondu Carlo Matulessy 2013-10-24 12:32:25

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

8
répondu Ronny Webers 2016-06-02 20:27:20

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>
6
répondu Dr. Failov 2016-02-15 17:01:25

Vous pouvez Également ajouter "&lt;br&#47;&gt;" au lieu de \n.

C'est du code HTML échappé pour

Et puis vous pouvez ajouter du texte à TexView:

articleTextView.setText(Html.fromHtml(textForTextView));
4
répondu mobiledev Alex 2011-07-19 09:45:40

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...

3
répondu Tim 2017-01-15 10:25:16

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;
    }
2
répondu Shylendra Madda 2017-06-29 03:06:38

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.

1
répondu Master 2016-07-27 11:52:21

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" />
1
répondu Fidan Gill 2017-08-30 20:23:08

\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.

1
répondu Josh Greco 2018-03-01 21:44:39

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());
1
répondu Rich Vogt 2018-03-05 00:38:21

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"
0
répondu Jarekczek 2018-08-05 08:20:42