Jak dodać podział linii w widoku tekstowym Androida?

Próbuję dodać podział linii w widoku tekstowym.

Próbowałem zasugerować, ale to nic nie da. Oto jak ustawiam swoje teksty.
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));

To jest mój ciąg: <string name="sample_string">some test line 1 \n some test line 2</string>

Powinno pokazywać się tak:

some test line 1
some test line 2

Ale to pokazuje TAK: some test line 1 some test line 2.

Czy coś przeoczyłem?
Author: Janusz, 2011-03-21

21 answers

\n u mnie działa tak:

<TextView android:text="First line\nNext line"
 182
Author: RonN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-27 09:44:08

Ok zorientowałem się:

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>

Więc zawijanie w CDATA jest konieczne i przerwy dodawane wewnątrz jako znaczniki html

Dziękuję wszystkim za pomoc!

 80
Author: dropsOfJupiter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-21 22:33:12

Android w wersji 1.6 nie rozpoznaje \r \ n. Zamiast tego użyj: System.getProperty ("linia.separator")

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");
 63
Author: Eric JOYÉ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-12 18:09:25

Linebreaks (\N) Tylko działa, jeśli umieścisz wartość zasobów w cudzysłowach w następujący sposób:

<string name="sample_string">"some test line 1 \n some test line 2"</string>

Nie zrobi linebreaks jeśli umieścisz go bez cudzysłowów takich jak:

<string name="sample_string">some test line 1 \n some test line 2</string>
Tak, to takie proste.
 55
Author: datayeah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-07 02:13:44

Wypróbowałem wszystkie powyższe, zrobiłem kilka własnych badań, w wyniku których otrzymałem następujące rozwiązanie do renderowania znaków ucieczki linii:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Używając metody replace musisz filtrować escaped linefeeds (np. '\ \ n')

  2. Tylko wtedy każda instancja znaków escape Feed '\n ' jest renderowana do rzeczywistego strumienia linii

W tym przykładzie użyłem Google Apps Scripting NoSQL database (ScriptDb) z danymi sformatowanymi w JSON.

Pozdrawiam : D
 27
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-03 01:32:48

To zadziałało dla mnie

android:text="First \n Second"
 16
Author: Aniruddha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-06 06:09:11

U mnie zadziałało, może ktoś się tego dowie:

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
 14
Author: Zeljko Ivanovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 23:09:09

Są dwa sposoby na obejście tego. Jeśli używasz łańcucha jako surowego, musisz użyć nowego wiersza charakter. Jeśli używasz go jako html, np. przez parsowanie go za pomocą Html.fromString, drugi wariant jest lepszy.

1) znak nowej linii \n

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

2) znacznik newline Html <br> lub <br />

<string name="sample> This<br>is a sample</string>
 14
Author: poitroae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-25 14:37:52

Używany Android Studio 0.8.9. Dla mnie jedynym sposobem jest użycie \n. Ani opakowanie z CDATA, ani <br> Ani <br /> nie zadziałało.

 9
Author: Maxim Berezovsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 04:31:46

Jeśli używasz XML do deklarowania TextView użyj android:singleLine = "false" lub w Javie, użyj txtSubTitle.setSingleLine(false);

 8
Author: strange quark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-21 19:26:36

Używam:

YOUR_TEXTVIEW.setText("Got some text \n another line");
 8
Author: Carlo Matulessy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-24 12:32:25

Bardzo proste: użyj "\N "

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);

\ N odpowiada znakowi ASCII 0XA, który jest " LF " lub "line feed"

\ R odpowiada znakowi ASCII 0XD, który jest " CR " lub zwrot karetki

To pochodzi z pierwszych maszyn do pisania, gdzie można wybrać tylko podawanie linii (i wpisać tylko linię niższą) lub podawanie linii + powrót karetki (który również przenosi się na początek linii)

Na Androidzie / Javie \n odpowiada karetce return + line feed, tak jak w przeciwnym razie wystarczy 'nadpisać' tę samą linię

 8
Author: Ronny Webers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 20:27:20

Spróbuj dwukrotnie sprawdzić swoje lokalizacje. Możliwe, że próbujesz edytować jeden plik( lokalizacja), ale tak naprawdę programujesz używając innego, , tak jak w moim przypadku. Domyślnym językiem systemu jest rosyjski, a ja próbuję edytować angielską lokalizację.

W moim przypadku rozwiązaniem roboczym jest użycie "\N " jako separatora linii:

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>
 6
Author: Dr. Failov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 17:01:25

Możesz także dodać "&lt;br&#47;&gt;" zamiast \N.

To kod HTML dla

A następnie możesz dodać tekst do TexView:

articleTextView.setText(Html.fromHtml(textForTextView));
 4
Author: mobiledev Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 09:45:40

Możesz również użyć edytora strun w Android Studio, który automatycznie generuje hamulce linii i takie tam...

 3
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-15 10:25:16

Jako Html.fromHtml przestarzały po prostu użyłem tego kodu, aby uzyskać String2 w następnej linii.

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
Author: Shylendra Madda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 03:06:38

Znalazłem inną metodę: Konieczne jest dodanie atrybutu"android:maxWidth="40dp" ". Oczywiście może nie działać idealnie, ale daje przerwę w linii.

 1
Author: Master,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-27 11:52:21

Najprostszym sposobem na to jest przejście do wartości/ciągów znaków (w folderze zasobów)

Zadeklaruj tam ciąg znaków:

    <string name="example_string">Line 1\Line2\Line n</string>

I w twoim konkretnym pliku xml po prostu wywołaj ciąg znaków jak

    <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/example_string" />
 1
Author: Fidan Gill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 20:23:08

\N nie pracował dla mnie. Udało mi się rozwiązać ten problem, zmieniając XML na tekst i budując właściwość tekstową textview, jak poniżej.

android:text="Line 1
Line 2
Line 3

DoubleSpace"
Mam nadzieję, że to pomoże tym, którzy powiedzieli, że nie działa dla nich.
 1
Author: Josh Greco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 21:44:39

Czytam mój tekst z pliku, więc przyjęłam nieco inne podejście, ponieważ dodanie \n do pliku skutkowało pojawieniem się \n w tekście.

    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
Author: Rich Vogt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 00:38:21

Może jesteś w stanie umieścić lf w tekście, ale nie wyświetla się? Upewnij się, że masz wystarczającą wysokość do kontroli. Na przykład:

Poprawny:

android:layout_height="wrap_content"

Może się mylić:

android:layout_height="10dp"
 0
Author: Jarekczek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-05 08:20:42