首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android TextView 程式碼設定換行文字:\n 處理與常見誤區

     編輯:程式設計綜合問答

程式碼中 setText("aaaa\nbbb\nccc") 可正確換行,但若字串來源為資源檔、網路回傳、JSON 解析,\n 可能以字面反斜線+n 形式存在(即 "aaaa\\nbbb"),需轉換處理。

直接寫入字串常值(正確)


textView.setText("第一行\n第二行\n第三行");
// 顯示:
// 第一行
// 第二行
// 第三行

常見問題:字面 \n 不換行


// 來源:strings.xml、API 回傳、設定檔
String raw = "第一行\\n第二行\\n第三行"; // 實際字元:反斜線 + n
textView.setText(raw); // 顯示:第一行\n第二行\n第三行 ❌

解決方案:字串替換


// 方法一:replace
String processed = raw.replace("\\n", "\n");
textView.setText(processed);

// 方法二:StringEscapeUtils (Apache Commons Text)
String processed = StringEscapeUtils.unescapeJava(raw);
textView.setText(processed);

// 方法三:正則(處理 \r\n, \n, \r 統一)
String processed = raw.replaceAll("(?

XML 資源檔正確寫法



第一行
第二行
第三行

第一行\n第二行\n第三行

// 程式碼讀取
String fromXml = getString(R.string.multi_line_text); // 自動解析換行
textView.setText(fromXml); // 正確換行

Html.fromHtml 替代方案(支援 HTML 標籤)


String html = "第一行
第二行
第三行"; textView.setText(Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)); // 或 API 24+ textView.setText(Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT));

多行文字完整屬性設定


TextView tv = findViewById(R.id.textView);
tv.setText("第一行\n第二行\n第三行");
tv.setMaxLines(3); // 限制最大行數
tv.setEllipsize(TextUtils.TruncateAt.END); // 超出顯示 ...
tv.setLineSpacing(0, 1.2f); // 行距倍率 1.2
tv.setGravity(Gravity.START | Gravity.TOP); // 對齊

核心原則

Java 字串常值中的 \n 是單一換行字元;外部來源的 \\n 是兩個字元,需轉換後再 setText。

理解字串來源與轉義差異,即可正確控制 TextView 多行顯示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved