String Resource ขึ้นบรรทัดใหม่ / n เป็นไปไม่ได้เหรอ?


167

ดูเหมือนว่าเป็นไปไม่ได้ที่จะเพิ่มบรรทัดใหม่/nไปยังสตริงทรัพยากร XML มีวิธีอื่นในการทำเช่นนี้หรือไม่?


12
คุณหมายถึง \ n? คุณมีตัวอย่างหรือไม่
Keith

1
มันควรจะเป็น \ n ทำงานให้ฉัน
akash89

1
@anandtripathi ฉันย้อนกลับการแก้ไขของคุณเพราะมันทำให้คำตอบไม่มีความหมาย OP ใช้ผิด \ n แทน / n ซึ่งเป็นสาระสำคัญของคำถาม เราไม่ควรแก้ไขรหัสของ OP แต่เฉพาะเนื้อหาของคำถามสำหรับ raisons ที่ชัดเจน
Vega

คำตอบ:


382

ใช้ blackslash ไม่ใช่ forlash ข้างหน้า \n

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

นอกจากนี้หากคุณวางแผนที่จะใช้สตริงเป็น HTML คุณสามารถใช้&lt;br /&gt;สำหรับการขึ้นบรรทัดใหม่ ( <br />)

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

3
ใน strings.xml รูปแบบ HTML เท่านั้นที่ยอมรับดังนั้น & lt; br / & gt; เป็นทางออกที่เหมาะสมให้
akash89

ฉันต้องการพูดถึงบางสิ่งบางอย่างสำหรับคนอย่างฉันถึงหน้านี้เพราะ Android Studio ใน AS เมื่อคุณแยกสตริงโดยใช้เครื่องมือของ IDE สตริงจะตัดอักขระบรรทัดใหม่โดยอัตโนมัติ คุณสามารถเพิ่มพวกเขากลับเข้าไปด้วยตนเองและมันจะทำงานได้ดี ไม่แน่ใจว่าทำไมมันถึงทำเช่นนี้
George Rautenbach

\ n ทำงานได้ดีสำหรับฉันไม่ต้องเปลี่ยนบรรทัดไม่มีทั้งสตริงที่มี / n คุณรู้ไหมว่าทำไม ? ตีไม่เข้าทำงานที่กล่าวในคำตอบอื่น ๆ
Thelouras

52

ฉันรู้ว่านี่เป็นคำถามที่ค่อนข้างเก่า แต่มันอยู่ในอันดับต้น ๆ เมื่อฉันค้นหา ฉันต้องการอัปเดตด้วยวิธีอื่น

ในไฟล์ strings.xml คุณสามารถทำ \ n หรือคุณสามารถกด 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>

ซึ่งจะส่งผลต่อไปนี้ใน TextView ของคุณ:

นี่คือสตริงของคุณ

นี่คือบรรทัดที่สองของสตริงของคุณ

บรรทัดที่สามของสตริงของคุณ

นี่เป็นเพราะมีสองคืนระหว่างการประกาศเริ่มต้นของสายอักขระและบรรทัดใหม่ ฉันได้เพิ่ม \ n ลงไปเพื่อความกระจ่างเพราะสามารถใช้ได้ ฉันต้องการใช้การคืนค่าขนส่งใน xml เพื่อดูรายการหรือสตริง multiline ที่ฉันมี สองเซ็นต์ของฉัน


3
โอ้นั่นน่าสนใจ ขอบคุณสำหรับการแบ่งปัน. นอกจากนี้ฉันรู้สึกเหมือนคนโง่ที่ถามคำถามนี้ แต่ดูเหมือนว่ามันได้ช่วยคนจำนวนมาก ฮ่า ๆ!!
Andi Jay

4
linebreaks ที่ต่อเนื่องกันสองอันได้รับการจัดการโดย Android (อย่างน้อยเวอร์ชันปัจจุบัน) เป็นพื้นที่เพียงหนึ่งเดียว github.com/paour/StringResourceTest
Pierre-Luc Paour

19

นี่เป็นคำถามเก่า แต่ฉันพบว่าเมื่อคุณสร้างสตริงเช่นนี้

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

ผลลัพธ์ในแอปของคุณจะเป็นเช่นนี้ (ไม่มีบรรทัดใหม่)

My New line test

เมื่อคุณใส่สตริงในเครื่องหมายคำพูด

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

บรรทัดใหม่จะปรากฏขึ้น:

My 
New line test

1
ธิสำหรับฉัน Html.fromHtmlแต่เพียงในกรณีที่จำได้ว่าเมื่อคุณกำหนดทรัพยากรเช่นข้างต้นคุณควรหลีกเลี่ยงการใช้ ขอบคุณ
Ahmad Reza Enshaee

การตัดสตริงหลายบรรทัดในเครื่องหมายคำพูดทำงานได้อย่างสมบูรณ์ ดีกว่าวาง\nทุกที่ (ซึ่งสามารถกลายเป็นอ่านไม่ได้และทำให้สับสน) ไม่จำเป็นต้องพูด แต่ในกรณี: ถ้าคุณต้องการมีเครื่องหมายคำพูดตามตัวอักษรในข้อความของคุณคุณต้องหลบหนี:\"
Nolonar

4

หากคุณใส่ "\ n" ลงในสตริงในไฟล์ xml จะถือว่าเป็น "\\ n"

ดังนั้นฉัน:

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

แล้วฉันก็กระโดดขึ้นบรรทัดบนหน้าจอ


3
จะเกิดขึ้นเฉพาะเมื่อคุณเพิ่มสตริงด้วยตัวช่วยสร้าง หากคุณแก้ไข xml จะได้ผล
Daniel Argüelles

ฉันทำผิดนี้ด้วย ขอบคุณสำหรับคำแนะนำ. แต่ฉันแค่แก้ไขการปรากฏตัวทั้งหมด \ n ตัวฉันเอง
Kanat

ไม่ใช่ทางออกที่ดี คุณควรได้รับข้อความจากแหล่งข้อมูลและใช้โดยตรง ถ้าคุณต้องจัดการกับตัวละครพิเศษมากกว่านี้ล่ะ? คุณจะเขียนโค้ดเพิ่มเติมให้พวกเขาด้วยหรือ ถ้าคุณมีคดีขอบ
dephinera

3

เมื่อใช้เครื่องมือแก้ไขการแปลใน Android Studio เพียงคลิกที่ไอคอนทางด้านขวา (หรือใช้ Shift-Enter) แล้วเพิ่มตัวแบ่งบรรทัดโดยใช้การส่งคืน สิ่งนี้จะแทรก \ n อย่างถูกต้องใน strings.xml ที่แปลแล้ว


ขอบคุณมากสำหรับคำตอบนี้
ง่าย

2
ไม่มีไอคอนทางด้านขวาและ Shift-Enter ข้ามไปยังข้อความถัดไปด้านบนอย่างน้อยใน Ubuntu
Tibor Nagy

3

ในสตูดิโอ Android รุ่นล่าสุดจะมีการพิมพ์ "\ n" เหมือนกำลังจะมีเว้นแต่ว่าสตริงทั้งหมดเป็นอะพอสโทรฟี

ตัวอย่างเช่น:

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

ฉันจะสร้างสองเส้นแบ่งได้อย่างไร
jvargas

1

ง่ายมากที่คุณจะต้องใส่
\ n ใน ตำแหน่งที่คุณต้องการแบ่งบรรทัดในทรัพยากรสตริงของคุณ

ตัวอย่างเช่น

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


ฉันจะสร้างสองเส้นแบ่งได้อย่างไร
jvargas

1

อย่าใช้ที่ว่างหลัง \ n ไม่เช่นนั้นมันจะไม่ทำงาน ฉันไม่รู้เหตุผล แต่เคล็ดลับนี้ใช้ได้กับฉันค่อนข้างดี


0

ฉันต้องการที่จะขยายตัวในนี้คำตอบ สิ่งที่พวกเขาหมายถึงคือไอคอนนี้:

ปุ่มแก้ไขหน้าต่าง

มันเปิด "หน้าต่างตัวแก้ไขจริง" แทนกล่องข้อความคุณลักษณะ จำกัด ในภาพรวมขนาดใหญ่ ในหน้าต่างตัวแก้ไขนั้น chars พิเศษ linebreaks ฯลฯ จะได้รับอนุญาตและแปลงเป็น "รหัส" xml ที่ถูกต้องเมื่อบันทึก


0

ฉันเพิ่งประสบปัญหานี้ ไม่ทำงานTextViewกับพารามิเตอร์ข้อ จำกัด การเพิ่มandroid:lines="2"ดูเหมือนว่าจะแก้ไขปัญหานี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.