Làm cách nào để thêm một dòng mới vào TextView trong Android?


253

Khi tôi xác định một TextViewtrong xml, làm thế nào để tôi thêm một dòng mới vào nó? \ndường như không làm việc

<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
Mã của bạn không làm việc cho tôi. Bạn nhận được gì thay vì văn bản nhiều dòng?
molnarm

2
Trong trình chỉnh sửa trực quan, nó hiển thị dưới dạng văn bản \ n
Pentium10

Câu trả lời:


293

Đừng tin vào trình soạn thảo Visual. Mã của bạn không hoạt động trong emu.


tốt, trong trường hợp của tôi, trình soạn thảo Visual đã nói sự thật. Nó đã thêm một dấu gạch chéo ngược khác để hiển thị dấu gạch chéo ngược. Cách chính xác là đặt văn bản bên trong tệp xml.
dp2050

79

Thử:

android:lines="2"

\n nên làm việc.


1
văn bản của tôi có thể dài hơn 2 dòng. Đó là một sự kiểm soát. Nó có thể là bất cứ điều gì.
giọtOfJupiter


38

Tôi nghĩ rằng điều này có liên quan đến HTM.fromHtml(subTitle)cuộc gọi của bạn : "\ n" không có nghĩa là bupkis với HTML. Hãy thử <br/>thay vì "\ n".


25
@androidevAlex Đó là vì đó là <br/> chứ không phải </br>
Ilya Kogan

21

Đầu tiên, đặt điều này trong văn bản của bạn:

android:maxLines="10"

Sau đó sử dụng \ntrong văn bản của văn bản của bạn.

maxLines làm cho TextView cao nhất nhiều dòng này. Bạn có thể chọn một số khác :)


19

Đã thử tất cả các cách trên, đã thực hiện một số nghiên cứu của riêng tôi, kết quả là giải pháp sau đây để hiển thị ký tự thoát nguồn cấp dữ liệu:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Sử dụng phương thức thay thế, bạn cần lọc các nguồn cấp dữ liệu đã thoát (ví dụ '\\\n')

  2. Chỉ sau đó, mỗi phiên bản của '\n'ký tự thoát nguồn cấp dữ liệu được hiển thị vào nguồn cấp thực tế

Trong ví dụ này, tôi đã sử dụng cơ sở dữ liệu noQuery (ScriptDb) của Google Apps với dữ liệu được tạo thành JSON.

Chúc mừng: D


1
Điều này làm việc cho tôi: thay thế ("\\ n", System.getProperty ("line.separator"));
slott

thay vào đó, string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
dùng846316

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" />

Tôi nghĩ cái này sẽ có hiệu quả.


8

2 xu của tôi, sử dụng TV Android.

Thêm \nvào chuỗi XML, trong khi đọc:

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

8

Tôi chỉ giải quyết vấn đề tương tự, đặt các thuộc tính dưới đây trong xml

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

công việc. Html.fromHtml("text1 <br> text2").toString()cũng làm việc.


Điều này vẫn có liên quan, cảm ơn! Tôi đã có maxLines, nhưng tôi không có singleLine = false.
blast_hardcheese

Đây là giải pháp duy nhất làm việc từ tôi. Cảm ơn!
Silas

8

Hãy chắc chắn rằng bạn \nđang ở trong "\n"đó để làm việc.


7

Điều này đã giải quyết vấn đề của tôi.

stringVar.replaceAll("\\\\n", "\\\n");


5

Một cách để làm điều này là sử dụng Htmlthẻ ::

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

5

Nếu bạn gỡ lỗi, bạn sẽ thấy chuỗi thực sự "\ \r\ \n"hoặc "\ \n", nghĩa là, nó đã được thoát. Vì vậy, nếu bạn xoa bóp chuỗi đó, để loại bỏ thêm \, bạn sẽ có giải pháp của bạn. Điều này đúng đặc biệt nếu bạn đang đọc từ cơ sở dữ liệu.


5

Bạn cần phải đặt "\n"trong strings.xmltập tin không nằm trong cách bố trí trang.


Điều này hiệu quả với tôi, trong đó Visual Editor đã thêm các dấu gạch chéo ngược cố gắng hiển thị dấu gạch chéo ngược trong \ n
dp2050

4

Cần giữ

1.android:maxLines="no of lines"

2.Và sử dụng \nđể có được các dòng tiếp theo


4

Đối với tôi, giải pháp là thêm dòng sau vào bố cục:

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

Và \ n hiển thị dưới dạng một dòng mới trong trình chỉnh sửa trực quan. Hy vọng nó giúp!


1
Tôi không chắc nó có liên quan đến câu hỏi không :)
Suleyman

Tôi gặp vấn đề tương tự là thay vì một dòng mới, chuỗi "\ n" chỉ xuất hiện. Khi tôi thêm dòng phía trên, đây không phải là trường hợp nữa và dòng mới xuất hiện
Rob

1
Có thể đó là vì bạn đang sử dụng tools:textvà không android:textthích OP, nhưng dù sao cũng xin lỗi vì đã làm phiền :)
Suleyman

Tôi nghĩ rằng tôi nên làm rõ nó hơn, nhờ nhận xét của bạn bây giờ tôi đã làm :) Tôi sử dụng android:textTôi nghĩ đó chỉ là một lỗi của trình soạn thảo trực quan, như câu trả lời chấp nhận cho thấy nhưng nó thoải mái hơn để có thể nhìn thấy nó :)
Cướp

Vâng, tôi hiểu rồi, bạn nói đúng là thoải mái hơn :) cảm ơn
Suleyman

4

Ngoài ra, bạn có thể thêm &lt;br&gt;thay vì\n.

Và sau đó bạn có thể thêm văn bản vào TexView:

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

Không có trong XML bạn không thể. Nó đưa ra lỗi biên dịch - android:textkhông thể chứa <hoặc> ký tự.
Timmmm

3

Bạn cần phải đặt \ntrong tập tinstring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

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

Điều này sẽ làm việc.


Không, nó không.
shazbot

<TextView android: layout_creen = "match_parent" android: layout_height = "quấn_content" android: singleLine = "false" android: text = "Prev Line & # 10; New LIne" /> Bạn cần chạy trong trình giả lập để thấy nó hoạt động. Cảm ơn
Viral Parmar

2

Cứ thử đi:

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

Trong tệp Java.


3
Vui lòng cung cấp câu trả lời thích hợp cho câu hỏi, nếu không hãy sử dụng nhận xét
DjSh

1

Câu trả lời của RuDrA05 là tốt, Khi tôi chỉnh sửa XML trên nhật thực thì nó không hoạt động, nhưng khi tôi chỉnh sửa XML bằng notepad ++ thì nó KHÔNG hoạt động.

Điều tương tự cũng xảy ra nếu tôi đọc một tệp txt được lưu bằng nhật thực hoặc notepad ++

Có lẽ có liên quan đến mã hóa.


1

Điều này hoạt động tốt. Kiểm tra nó cho ứng dụng của bạn.

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

Lưu ý bên: Viết hoa văn bản bằng cách sử dụng

android:inputType="textCapCharacters"

hoặc tương tự dường như để ngăn chặn \nlàm việc.


1

Hãy chắc chắn rằng bạn đang sử dụng your_package.R và khôngandroid.R



0

đối với dòng mới trong TextView, chỉ cần thêm \ n vào giữa văn bản của bạn, nó hoạt động ..


nhưng câu trả lời liên quan đến liên kết câu hỏi Không phải câu hỏi "CỦA BẠN" ...
Nikhil Borad

omg..Xin lỗi do tôi nhầm lẫn. Xin vui lòng chỉnh sửa câu trả lời của bạn..Tôi thay đổi phiếu bầu của tôi tích cực.
Ranjith Kumar

1
đầu tiên chỉnh sửa câu trả lời của bạn. khác tôi không thể thay đổi phiếu bầu của tôi.
Ranjith Kumar

0

Nếu TextView nằm trong bất kỳ Bố cục nào (ví dụ: linearLayout), hãy thử thay đổi thuộc tính định hướng thành dọc như android:orientation="vertical"đối với bố cục hoặc thay đổi TextViewthuộc tính android:singleLine="true"để tạo một dòng mới sau nó.


0

Lập trình: myTV.setText ("Văn bản của tôi" + "\ n" + myString);


0

Tạo một chuỗi trong stings.xml của bạn

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

Sau đó, trong mã bạn tham chiếu chuỗi

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.