web-dev-qa-db-fra.com

Comment ajouter un saut de ligne dans un Android TextView?

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?

134
dropsOfJupiter

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

81
dropsOfJupiter

\n fonctionne pour moi, comme ceci:

<TextView Android:text="First line\nNext line"
196
RonN

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");
65
Eric JOYÉ

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.

58
datayeah

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

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

28
Robert

Cela a fonctionné pour moi 

Android:text="First \n Second"
16
Aniruddha

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");
15
Zeljko Ivanovic

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.

1) Caractère de nouvelle ligne \n

<string name="sample> This\nis a sample</string>

2) balise HTML newline <br> ou <br />

<string name="sample> This<br>is a sample</string>
15
poitroae

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

9
Maxim Berezovsky

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

8
strange quark

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 

8
Ronny Webers

J'utilise les éléments suivants:

YOUR_TEXTVIEW.setText("Got some text \n another line");
8
Carlo Matulessy

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>
6
Dr. Failov

Aussi, vous pouvez ajouter "&lt;br&#47;&gt;" 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));
4
mobiledev Alex

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
Tim

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;
    }
2
Shylendra Madda

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" />
2
Fidan Gill

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

1
Josh Greco

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());
1
Rich Vogt

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.

1
Master

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"
0
Jarekczek

Dans mon cas, j'ai résolu ce problème en ajoutant ce qui suit:

Android:inputType="textMultiLine"
0
Elcio Cestari