String Resource baris baru / n tidak mungkin?


167

Sepertinya tidak mungkin menambahkan baris baru /nke string sumber daya XML. Apakah ada cara lain untuk melakukan ini?


12
maksudmu \ n? Apakah kamu punya contoh?
Keith

1
Seharusnya \ n. Bekerja untuk saya
akash89

1
@ anandtripathi, saya memutar kembali hasil edit Anda karena itu membuat jawaban tidak ada artinya. OP salah menggunakan \ n alih-alih / n, yang merupakan inti dari pertanyaan. Kita seharusnya tidak memperbaiki kode OP, tetapi hanya badan pertanyaan, untuk raison yang jelas
Vega

Jawaban:


382

gunakan blackslash bukan forwardslash. \n

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

Selain itu, jika Anda berencana menggunakan string sebagai HTML, Anda dapat menggunakan &lt;br /&gt;untuk pemisah baris ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>

3
Di strings.xml hanya format HTML yang diterima, jadi & lt; br / & gt; adalah solusi tepat yang disediakan
akash89

Saya ingin menyebutkan sesuatu untuk orang-orang seperti saya mencapai halaman ini karena Android Studio. Di AS ketika Anda mengekstrak string menggunakan alat IDE, itu secara otomatis menghapus karakter baris baru. Anda bisa menambahkannya kembali secara manual dan itu akan berfungsi dengan baik. Tidak yakin mengapa ini terjadi.
George Rautenbach

\ n doest bekerja untuk saya, tidak mengubah baris yang tidak memiliki string / n. Apa kamu tahu kenapa ? tidak ada hit masuk bekerja, yang mengatakan dalam jawaban lain
Thelouras

52

Saya tahu ini pertanyaan yang cukup lama tetapi berada di puncak daftar ketika saya mencari. Jadi saya ingin memperbarui dengan metode lain.

Dalam file strings.xml Anda dapat melakukan \ n atau Anda cukup menekan 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>

Ini akan menghasilkan yang berikut di TextView Anda:

Ini senar Anda.

Ini adalah baris kedua dari string Anda.

Baris ketiga dari string Anda.

Ini karena ada dua pengembalian antara deklarasi awal string dan baris baru. Saya juga menambahkan \ n untuk kejelasan, karena keduanya dapat digunakan. Saya suka menggunakan carriage return di xml untuk dapat melihat daftar atau string multiline apa pun yang saya miliki. Dua sen saya.


3
Oh, itu menarik. Terima kasih telah berbagi. Juga, saya merasa seperti orang bodoh karena mengajukan pertanyaan ini, tetapi sepertinya itu telah membantu banyak orang. LOL !!
Andi Jay

4
Dua linebreak berturut-turut diperlakukan oleh (setidaknya versi saat ini) Android hanya sebagai satu ruang. github.com/paour/StringResourceTest
Pierre-Luc Paour

19

Ini adalah pertanyaan lama, tetapi saya menemukan bahwa ketika Anda membuat string seperti ini:

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

Output di aplikasi Anda akan seperti ini (tidak ada baris baru)

My New line test

Saat Anda meletakkan string dalam tanda kutip

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

baris baru akan muncul:

My 
New line test

1
Bekerja untuk saya tetapi untuk berjaga-jaga, ingat ketika Anda mendefinisikan sumber daya seperti di atas, Anda harus menghindari penggunaan Html.fromHtml. Terima kasih
Ahmad Reza Enshaee

Membungkus string multiline dalam tanda kutip bekerja dengan sempurna. Jauh lebih baik daripada meletakkan di \nmana - mana (yang bisa dengan cepat menjadi tidak dapat dibaca dan membingungkan). Tak perlu dikatakan, tetapi untuk berjaga-jaga: jika Anda ingin memiliki tanda kutip literal dalam teks Anda, Anda harus menghindarinya:\"
Nolonar

4

Jika Anda meletakkan "\ n" dalam string di file xml, itu diambil sebagai "\\ n"

Jadi saya lakukan:

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

Dan kemudian saya mendapatkan garis melompat di layar


3
Hanya terjadi ketika Anda menambahkan string dengan wizard. Jika Anda mengedit xml berfungsi
Daniel Argüelles

Saya membuat kesalahan ini juga. Terima kasih atas saranmu. Tapi saya hanya mengoreksi semua penampilan diri saya sendiri.
Kanat

Bukan solusi yang bagus. Anda harus mendapatkan teks dari sumber daya dan menggunakannya secara langsung. Bagaimana jika Anda harus menangani lebih banyak karakter khusus? Anda akan menulis lebih banyak kode untuk mereka juga? Bagaimana jika Anda memiliki kasing tepi?
dephinera

3

Saat menggunakan editor terjemahan di Android Studio cukup klik ikon di sebelah kanan (atau gunakan Shift-Enter) dan kemudian tambahkan jeda baris menggunakan kembali. Ini akan memasukkan \ n dengan benar di strings.xml yang dilokalkan.


Terima kasih banyak atas jawaban ini.
Sederhana

2
Tidak ada ikon di sebelah kanan dan Shift-Enter melompat ke teks berikutnya di atas, setidaknya di ubuntu.
Tibor Nagy

3

Dalam versi terbaru dari studio Android, "\ n" akan dicetak seperti itu dimaksudkan untuk berada di sana kecuali seluruh string itu dalam apostrof

Sebagai contoh:

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

Bagaimana saya bisa membuat dua garis putus?
jvargas

1

Sangat sederhana, Anda harus meletakkan
\ n di mana pun Anda ingin memecah baris dalam sumber daya string Anda.

Sebagai contoh

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


Bagaimana saya bisa membuat dua garis putus?
jvargas

1

jangan menaruh spasi setelah \ n, jika tidak, itu tidak akan berhasil. Saya tidak tahu alasannya, tetapi trik ini berhasil untuk saya.


0

Saya ingin memperluas jawaban ini . Apa yang mereka maksudkan adalah ikon ini:

Tombol jendela editor

Ini membuka "jendela editor nyata" bukan kotak teks fitur terbatas dalam ikhtisar besar. Di jendela editor itu, karakter khusus, pemecah garis, dll. Diizinkan dan dikonversi ke "kode" xml yang benar saat disimpan


0

Saya baru saja menghadapi masalah ini. tidak bekerja TextViewdengan parameter kendala. Menambahkan android:lines="2"sepertinya memperbaiki ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.