Ciąg zasobu nowa linia / n nie jest możliwy?

167

Wydaje się, że nie jest możliwe dodanie nowej linii /ndo ciągu zasobów XML. Czy jest na to inny sposób?

Andi Jay
źródło
12
masz na myśli \ n? masz przykład?
Keith,
1
To powinno być \ n. Działa dla mnie
akash89
1
@anandtripathi, wycofałem Twoją zmianę, ponieważ spowodowała, że ​​odpowiedzi stały się bez znaczenia. OP użył błędnie \ n zamiast / n, co jest istotą pytania. Nie powinniśmy poprawiać kodu OP, a tylko treść pytania, dla oczywistych przyczyn
Vega

Odpowiedzi:

382

użyj czarnego ukośnika, a nie ukośnika do przodu. \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

Ponadto, jeśli planujesz używać ciągu jako HTML, możesz użyć &lt;br /&gt;do podziału wiersza ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>
James
źródło
3
W strings.xml akceptuje tylko format HTML, więc & lt; br / & gt; jest odpowiednim rozwiązaniem
akash89
Chciałbym wspomnieć o czymś dla ludzi takich jak ja, którzy trafiają na tę stronę z powodu Android Studio. W AS, gdy wyodrębniasz ciąg za pomocą narzędzia IDE, automatycznie usuwa znaki nowej linii. Możesz po prostu ręcznie dodać je z powrotem i będzie działać dobrze. Nie wiem, dlaczego to robi.
George Rautenbach
\ n działa jak dla mnie, nie zmienia linii ani łańcuch nie ma / n. Wiesz dlaczego ? żadne uderzenie nie działa, co powiedział w innych odpowiedziach
Thelouras
52

Wiem, że to dość stare pytanie, ale znalazło się na szczycie listy, kiedy szukałem. Więc chciałem zaktualizować inną metodą.

W pliku strings.xml możesz wykonać \ n lub po prostu nacisnąć enter:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

Spowoduje to, że w Twoim TextView:

To jest twój sznurek.

To jest druga linia twojego ciągu.

Trzecia linia twojego ciągu.

Dzieje się tak, ponieważ między początkową deklaracją ciągu a nową linią wystąpiły dwa powroty. Dla jasności dodałem także \ n, ponieważ można użyć obu. Lubię używać powrotu karetki w xml, aby móc zobaczyć listę lub dowolny ciąg wielowierszowy, który mam. Moje dwa centy.

Dimesio
źródło
3
Och, to interesujące. dzięki za udostępnienie. Czuję się też jak idiota, zadając to pytanie, ale wygląda na to, że pomogło to wielu ludziom. LOL!!
Andi Jay
4
Dwa kolejne podziały wierszy są traktowane (przynajmniej w obecnych wersjach) Androida jako pojedyncza spacja. github.com/paour/StringResourceTest
Pierre-Luc Paour
19

To jest stare pytanie, ale odkryłem, że kiedy tworzysz taki ciąg:

<string name="newline_test">My
New line test</string>

Wynik w Twojej aplikacji będzie taki (bez nowej linii)

My New line test

Kiedy umieścisz ciąg w cudzysłowie

<string name="newline_test">"My
New line test"</string>

pojawi się nowa linia:

My 
New line test
Piotr
źródło
1
U mnie działa, ale na wszelki wypadek pamiętaj, że definiując zasoby jak powyżej, powinieneś unikać używania Html.fromHtml. Dzięki
Ahmad Reza Enshaee,
Zawijanie wielowierszowego ciągu w cudzysłów działało idealnie. Znacznie lepsze niż umieszczanie \nwszędzie (co może szybko stać się nieczytelne i zagmatwane). Nie trzeba dodawać, ale na wszelki wypadek: jeśli chcesz mieć dosłowny cudzysłów w swoim tekście, musisz go \"
pominąć
4

Jeśli umieścisz „\ n” w ciągu znaków w pliku xml, zostanie on potraktowany jako „\\ n”

Więc zrobiłem :

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

I wtedy na ekranie pojawia się przeskok linii

płomienniejszy
źródło
3
Dzieje się tylko wtedy, gdy dodasz ciąg za pomocą kreatora. Jeśli edytujesz xml, to działa
Daniel Argüelles
Ja też popełniłem ten błąd. Dzięki za radę. Ale właśnie poprawiłem wszystkie wyglądy \ n siebie.
Kanat
Nie jest to dobre rozwiązanie. Powinieneś pobrać tekst z zasobów i użyć go bezpośrednio. A co, jeśli musisz obsługiwać więcej znaków specjalnych? Napiszesz też dla nich więcej kodu? A co jeśli masz skrajne przypadki?
dephinera
3

Korzystając z edytora tłumaczeń w Android Studio, wystarczy kliknąć ikonę po prawej stronie (lub użyć Shift-Enter), a następnie dodać podziały wierszy za pomocą powrotu. Spowoduje to prawidłowe wstawienie \ n do zlokalizowanego pliku strings.xml.

Torkel Börjeson
źródło
Wielkie dzięki za tę odpowiedź.
Proste
2
Po prawej stronie nie ma ikony, a Shift-Enter przeskakuje do następnego tekstu powyżej, przynajmniej na ubuntu.
Tibor Nagy,
3

W najnowszej wersji Android Studio „\ n” zostanie wydrukowane tak, jakby miało tam być, chyba że cały ciąg jest w apostrofach

Na przykład:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>
Sventra
źródło
Jak mogę zrobić dwie linie przerwania?
jvargas
1

Bardzo proste musisz po prostu wstawić
\ n tam, gdzie chcesz przerwać linię w swoim zasobie ciągu.

Na przykład

String s = my string resource have \n line break here;

Ali Nawaz
źródło
Jak mogę zrobić dwie linie przerwania?
jvargas
1

nie umieszczaj spacji po \ n, w przeciwnym razie nie zadziała. Nie znam powodu, ale ta sztuczka zadziałała na mnie całkiem nieźle.

SaloniGupts
źródło
0

Chcę rozwinąć odpowiedź. Miały na myśli tę ikonę:

Przycisk okna edytora

Otwiera "prawdziwe okno edytora" zamiast pola tekstowego z ograniczonymi funkcjami w dużym przeglądzie. W tym oknie edytora dozwolone są znaki specjalne, podziały wierszy itp., Które po zapisaniu są konwertowane na prawidłowy „kod” xml

Patrick
źródło
0

Właśnie stanąłem przed tym problemem. nie działał TextViewz parametrami ograniczenia. android:lines="2"Wydaje się, że dodanie tego rozwiązuje.

Hill Karimov
źródło