ตัวอย่างนี้สาธิตวิธี เพิ่มการขึ้นบรรทัดใหม่ (Line Break) ใน TextView ทั้งใน XML String Resource และโค้ด Kotlin
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
Android Studio → New Project → Empty Activity
ขั้นตอนที่ 2: Layout (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="24dp"
android:text="Line Break Demo"
android:textColor="@android:color/holo_green_dark"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvMultiline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/multiline_text"
android:textColor="@android:color/black"
android:textSize="18sp" />
</RelativeLayout>
ขั้นตอนที่ 3: String Resource (res/values/strings.xml)
<resources>
<string name="app_name">LineBreakDemo</string>
<!-- ใช้ \n สำหรับ Line Break ใน XML -->
<string name="multiline_text">Line 1: First line\nLine 2: Second line\nLine 3: Third line</string>
<!-- หรือใช้ <br/> (ต้องใช้ HTML.fromHtml) -->
<string name="html_multiline">Line 1: First line<br/>Line 2: Second line<br/>Line 3: Third line</string>
</resources>
ขั้นตอนที่ 4: โค้ดหลัก (MainActivity.kt)
import android.os.Bundle
import android.text.Html
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "Line Break Demo"
val tvMultiline = findViewById(R.id.tvMultiline)
// 🔑 วิธีที่ 1: ใช้ \n ใน Code (แนะนำ)
tvMultiline.text = "Line 1: First line\nLine 2: Second line\nLine 3: Third line"
// 🔑 วิธีที่ 2: ใช้ String Resource ที่มี \n (XML ด้านบน)
// tvMultiline.text = getString(R.string.multiline_text)
// 🔑 วิธีที่ 3: ใช้ HTML
(ต้อง parse)
// val htmlText = getString(R.string.html_multiline)
// tvMultiline.text = Html.fromHtml(htmlText, Html.FROM_HTML_MODE_LEGACY)
// 🔑 วิธีที่ 4: StringBuilder สำหรับ Dynamic
val lines = listOf("Apple", "Banana", "Cherry", "Durian")
val dynamicText = lines.joinToString("\n") { "Fruit: $it" }
// tvMultiline.text = dynamicText
}
}
📋 สรุปวิธีต่างๆ
| วิธี | Syntax | ใช้ใน | หมายเหตุ |
|---|---|---|---|
| Escape Sequence | \n |
Kotlin Code, XML String | ✅ เร็วที่สุด แนะนำมากที่สุด |
| HTML Tag | <br/> |
XML String + Html.fromHtml() | รองรับ Bold, Italic, Color ได้ |
| Paragraph | \n\n |
Kotlin Code | เว้นบรรทัดว่าง (Paragraph break) |
| StringBuilder | joinToString("\n") |
Dynamic List | สร้างจาก List/Array |
🎨 HTML Tags ที่รองรับใน TextView
val html = """
<b>Bold</b> <i>Italic</i> <u>Underline</u>
<br/>
<font color="#FF0000">Red Text</font>
<big>Big</big> <small>Small</small>
"""
tv.text = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
ขั้นตอนที่ 5: AndroidManifest.xml
Manifest มาตรฐาน
ทดสอบ
- รันแอป → TextView แสดง 3 บรรทัด คั่นด้วย \n
- ลอง Comment/Uncomment วิธีต่างๆ ในโค้ด
- สังเกต: \n ทำงานได้ทุกที่,
ต้องใช้ Html.fromHtml()