ฉันจะเพิ่มบรรทัดใหม่ใน TextView ใน Android ได้อย่างไร


253

เมื่อฉันกำหนดTextViewในxmlฉันจะเพิ่มบรรทัดใหม่ได้อย่างไร \nดูเหมือนจะไม่ทำงาน

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
รหัสของคุณใช้งานได้สำหรับฉัน คุณได้อะไรแทนที่จะเป็นข้อความหลายบรรทัด?
molnarm

2
ในเครื่องมือแก้ไขภาพจะแสดงข้อความต้นฉบับ \ n
Pentium10

คำตอบ:


293

อย่าเชื่อถือโปรแกรมแก้ไขภาพ รหัสของคุณใช้งานได้ในอีมู


ในกรณีของฉันตัวแก้ไขภาพกำลังบอกความจริง มันเพิ่มเครื่องหมายทับขวาอีกอันเพื่อแสดงเครื่องหมายแบ็กสแลช วิธีที่ถูกต้องคือการใส่ข้อความไว้ในไฟล์ xml
dp2050



38

ฉันคิดว่าสิ่งนี้เกี่ยวข้องกับการHTM.fromHtml(subTitle)โทรของคุณ: "\ n" ไม่ได้แปลว่า bupkis เป็น HTML ลอง<br/>แทน "\ n"


25
@androidevAlex นั่นเป็นเพราะมัน <br/> ไม่ใช่ </br>
Ilya Kogan

21

ขั้นแรกให้ใส่สิ่งนี้ลงในมุมมองข้อความของคุณ:

android:maxLines="10"

จากนั้นใช้\nในข้อความของมุมมองข้อความของคุณ

maxLines ทำให้ TextView สูงที่สุดในหลายบรรทัด คุณอาจเลือกหมายเลขอื่น :)


19

พยายามทั้งหมดข้างต้นได้ทำการวิจัยของฉันเองทำให้เกิดวิธีแก้ไขปัญหาดังต่อไปนี้สำหรับการเรนเดอร์ตัวอักษรเส้นป้อน:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. การใช้วิธีการแทนที่คุณจำเป็นต้องกรองตัวกรองlinefeeds ที่หลบหนี (เช่น'\\\n')

  2. จากนั้นแต่ละอินสแตนซ์ของตัว'\n'หลีกเลี่ยงตัวดึงข้อมูลบรรทัดจะแสดงผลในตัวป้อนบรรทัดจริง

สำหรับตัวอย่างนี้ฉันใช้ฐานข้อมูล noSQL (ScriptDb) ของ Google Apps Scripting กับข้อมูลที่จัดรูปแบบ JSON

ไชโย: D


1
สิ่งนี้ใช้ได้กับฉัน: แทนที่ ("\\ n", System.getProperty ("line.separator"));
slott

ค่อนข้าง string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
user846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

ฉันคิดว่ามันจะใช้ได้


8

2 เซนต์ของฉันใช้ Android TV

เพิ่ม\nในสตริง XML ขณะที่อ่าน:

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

ฉันเพิ่งแก้ปัญหาเดียวกันวางคุณลักษณะด้านล่างใน xml

android:lines="2" android:maxLines="4" android:singleLine="false"

งาน. Html.fromHtml("text1 <br> text2").toString()ยังทำงานได้


ยังมีความเกี่ยวข้องขอบคุณ! ฉันมี maxLines แต่ฉันไม่มี singleLine = false
blast_hardcheese

นี่เป็นทางออกเดียวที่ทำงานจากฉัน ขอบคุณ!
สิลาส




5

วิธีหนึ่งในการทำเช่นนี้คือการใช้Htmlแท็ก ::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

หากคุณดีบั๊กคุณจะเห็นว่าสตริงนั้นเป็นจริง"\ \r\ \n"หรือ"\ \n"คือมันหนีออกมา ดังนั้นถ้าคุณนวดสายนั้นเพื่อกำจัดส่วนเกิน\คุณจะได้ทางออกของคุณ นี่เป็นเรื่องจริงโดยเฉพาะถ้าคุณกำลังอ่านจากฐานข้อมูล


5

คุณต้องใส่"\n"ในstrings.xmlไฟล์ที่ไม่ได้อยู่ในเค้าโครงหน้า


สิ่งนี้ใช้ได้กับฉันโดยที่ Visual Editor กำลังเพิ่มแบ็กสแลชพิเศษที่พยายามแสดงแบ็กสแลชใน \ n
dp2050


4

สำหรับฉันทางออกคือการเพิ่มบรรทัดต่อไปนี้ไปยังเค้าโครง:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

และ \ n แสดงเป็นบรรทัดใหม่ในเครื่องมือแก้ไขภาพ หวังว่ามันจะช่วย!


1
ผมไม่แน่ใจว่ามันเกี่ยวข้องกับคำถาม :)
Suleyman

ฉันมีปัญหาเดียวกันกับที่แทนที่จะขึ้นบรรทัดใหม่สตริง "\ n" เพิ่งปรากฏตัว เมื่อฉันเพิ่มบรรทัดด้านบนกรณีนี้ไม่ได้อีกต่อไปและบรรทัดใหม่ปรากฏขึ้น
Rob

1
อาจจะเป็นเพราะคุณใช้tools:textและไม่android:textเหมือน OP แต่ anyways ขอโทษสำหรับรบกวน :)
Suleyman

ฉันคิดว่าฉันควรจะอธิบายให้ดีกว่านี้ขอบคุณความคิดเห็นของคุณฉันทำแล้ว :) ฉันใช้android:textฉันคิดว่ามันเป็นเพียงข้อผิดพลาดของโปรแกรมแก้ไขภาพเช่นคำตอบ acceptet แนะนำ แต่มันสะดวกสบายมากขึ้นที่จะเห็นมัน :)
Rob

ใช่ฉันเข้าใจแล้วตอนนี้คุณพูดถูกแล้วมันสบายกว่า :) ขอบคุณ
Suleyman

4

นอกจากนี้คุณสามารถเพิ่ม &lt;br&gt;แทน\n.

จากนั้นคุณสามารถเพิ่มข้อความใน TexView:

articleTextView.setText(Html.fromHtml(textForTextView));

ไม่ได้อยู่ใน XML คุณไม่สามารถทำได้ มันทำให้เกิดข้อผิดพลาดในการคอมไพล์ - android:textต้องไม่มีอักขระ <หรือ>
Timmmm


2
 android:text="Previous Line &#10; Next Line" 

สิ่งนี้จะได้ผล


ไม่เลย
shazbot

<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Prev Line & # 10; New Line" /> คุณต้องทำงานในโปรแกรมจำลองเพื่อดูว่าทำงานได้หรือไม่ ขอบคุณ
Viral Parmar

2

เพียงแค่พยายามที่:

Textview_name.settext("something \n  new line "):

ในไฟล์ Java


3
โปรดระบุคำตอบที่ถูกต้องสำหรับคำถามมิฉะนั้นใช้ความคิดเห็น
DjSh

1

คำตอบของ RuDrA05 นั้นดีเมื่อฉันแก้ไข XML บน eclipse มันไม่ทำงาน แต่เมื่อฉันแก้ไข XML ด้วย notepad ++ มันไม่ทำงาน

สิ่งเดียวกันนี้เกิดขึ้นถ้าฉันอ่านไฟล์ txt ที่บันทึกด้วย eclipse หรือ notepad ++

อาจเกี่ยวข้องกับการเข้ารหัส



1

หมายเหตุด้านข้าง: ใช้ตัวพิมพ์ใหญ่สำหรับข้อความ

android:inputType="textCapCharacters"

หรือดูเหมือนว่าจะหยุด\nทำงาน


1

ตรวจสอบให้แน่ใจว่าคุณใช้งานอยู่your_package.R และไม่ใช้งานandroid.R



0

สำหรับบรรทัดใหม่ใน TextView เพียงเพิ่ม\ nตรงกลางข้อความของคุณใช้งานได้ ..


แต่คำตอบนั้นเกี่ยวข้องกับลิงก์คำถามไม่ใช่คำถาม"ของคุณ" ...
Nikhil Borad

ฉันขอโทษที่ฉันสับสนโปรดแก้ไขคำตอบของคุณ .. ฉันเปลี่ยนการลงคะแนนในเชิงบวกของฉัน
Ranjith Kumar

1
เฮ้แก้ไขคำตอบของคุณก่อน อื่นฉันไม่สามารถเปลี่ยนการลงคะแนนของฉัน
Ranjith Kumar

0

หาก TextView อยู่ในเค้าโครง (ตัวอย่าง LinearLayout) ใด ๆ ให้ลองเปลี่ยนแอตทริบิวต์การวางแนวเป็นแนวตั้ง android:orientation="vertical"สำหรับเค้าโครงหรือเปลี่ยนTextViewคุณลักษณะandroid:singleLine="true"เพื่อสร้างบรรทัดใหม่หลังจากนั้น



0

สร้างสตริงใน stings.xml ของคุณ

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

จากนั้นในรหัสคุณอ้างอิงสตริง

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.