0Pricing
Android Academy · บทเรียน

ตัวเลือกและการทำงานของแป้นพิมพ์

ชนิดแป้นพิมพ์ การทำงานของ IME และโฟกัส

ตัวเลือกและการทำงานของแป้นพิมพ์ เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

แป้นพิมพ์ที่เหมาะกับงาน

ฟอร์มที่ออกแบบมาอย่างดีจะแสดงแป้นพิมพ์บนหน้าจอที่เหมาะสม เช่น ตัวเลขสำหรับโทรศัพท์ ปุ่ม @ สำหรับอีเมล และปุ่ม "ถัดไป" เพื่อเลื่อนไปยังฟิลด์ต่าง ๆ Compose ควบคุมทั้งหมดนี้ด้วย KeyboardOptions และ KeyboardActions

ในบทเรียนนี้ คุณจะกำหนดชนิดแป้นพิมพ์ การทำงานของ IME และจัดการโฟกัสระหว่างฟิลด์

การเลือกชนิดแป้นพิมพ์

ส่ง KeyboardOptions ให้ฟิลด์ข้อความและกำหนด keyboardType จากนั้นระบบจะแสดงแป้นพิมพ์ที่เหมาะกับข้อมูล

ค่าที่ใช้บ่อย ได้แก่ Text, Number, Email, Phone และ Password

var email by remember { mutableStateOf("") }

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Email") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Email
    )
)

แป้นพิมพ์ตัวเลข

สำหรับจำนวนหรือ PIN ให้ใช้ KeyboardType.Number และใช้ร่วมกับการกรองอินพุตเพื่อรับเฉพาะตัวเลข ดังที่ได้เรียนรู้ในบทเรียนการตรวจสอบ

var pin by remember { mutableStateOf("") }

OutlinedTextField(
    value = pin,
    onValueChange = { pin = it.filter { c -> c.isDigit() } },
    label = { Text("PIN") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Number
    )
)

การซ่อนรหัสผ่าน

ควรปกปิดรหัสผ่าน ใช้ visualTransformation = PasswordVisualTransformation() ร่วมกับชนิดแป้นพิมพ์สำหรับรหัสผ่าน

สถานะยังคงเก็บอักขระจริงไว้ เพียงแต่ปกปิดการแสดงผลเท่านั้น

var password by remember { mutableStateOf("") }

OutlinedTextField(
    value = password,
    onValueChange = { password = it },
    label = { Text("Password") },
    visualTransformation = PasswordVisualTransformation(),
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Password
    )
)

ปุ่มการทำงานของ IME

ปุ่มมุมขวาล่างของแป้นพิมพ์คือการทำงานของ IME กำหนดได้ด้วย imeAction ใช้ Next เพื่อไปยังฟิลด์ถัดไป และใช้ Done กับฟิลด์สุดท้าย

OutlinedTextField(
    value = name,
    onValueChange = { name = it },
    label = { Text("Name") },
    keyboardOptions = KeyboardOptions(
        imeAction = ImeAction.Next
    )
)

การตอบสนองต่อการทำงานของ IME

หากต้องการตอบสนองเมื่อผู้ใช้แตะปุ่มดังกล่าว ให้ส่ง KeyboardActions เข้าไป การทำงานแต่ละแบบ (onNext, onDone, onSearch) คือลัมบ์ดาที่คุณเป็นผู้กำหนดการทำงาน

ในตัวอย่างนี้ การกด Done จะซ่อนแป้นพิมพ์

val keyboard = LocalSoftwareKeyboardController.current

OutlinedTextField(
    value = text,
    onValueChange = { text = it },
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
        onDone = { keyboard?.hide() }
    )
)

ย้ายโฟกัสไปยังฟิลด์ถัดไป

สำหรับฟอร์มที่มีหลายฟิลด์ ปุ่มถัดไปควรพาไปยังฟิลด์ถัดไป ใช้ LocalFocusManager และเรียกใช้ moveFocus

val focusManager = LocalFocusManager.current

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
    keyboardActions = KeyboardActions(
        onNext = { focusManager.moveFocus(FocusDirection.Down) }
    )
)

ล้างโฟกัสเมื่อกด Done

ในฟิลด์สุดท้าย การล้างโฟกัสจะปิดแป้นพิมพ์และยกเลิกการเลือกฟิลด์ ให้เรียกใช้ focusManager.clearFocus() ภายใน onDone

OutlinedTextField(
    value = password,
    onValueChange = { password = it },
    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
    keyboardActions = KeyboardActions(
        onDone = { focusManager.clearFocus() }
    )
)

การขอโฟกัสด้วยโปรแกรม

บางครั้งคุณต้องการให้ฟิลด์มีโฟกัสทันทีที่หน้าจอปรากฏ เช่น ช่องค้นหา ให้ผูก FocusRequester และขอโฟกัสภายใน LaunchedEffect

val focusRequester = remember { FocusRequester() }

LaunchedEffect(Unit) { focusRequester.requestFocus() }

OutlinedTextField(
    value = query,
    onValueChange = { query = it },
    modifier = Modifier.focusRequester(focusRequester),
    label = { Text("Search") }
)

การขึ้นต้นตัวพิมพ์ใหญ่และการแก้ไขอัตโนมัติ

KeyboardOptions ยังควบคุม capitalization และ autoCorrectEnabled ได้ด้วย ให้ขึ้นต้นทุกคำด้วยตัวพิมพ์ใหญ่สำหรับชื่อ หรือปิดการแก้ไขอัตโนมัติสำหรับชื่อผู้ใช้ เพื่อไม่ให้ชื่อถูกแก้จนผิด

OutlinedTextField(
    value = fullName,
    onValueChange = { fullName = it },
    label = { Text("Full name") },
    keyboardOptions = KeyboardOptions(
        capitalization = KeyboardCapitalization.Words,
        autoCorrectEnabled = false
    )
)

Kotlin ล้วน: การเลือกการทำงานของ IME

ตรรกะ "ใช้ Next กับทุกฟิลด์ยกเว้นฟิลด์สุดท้าย และใช้ Done กับฟิลด์สุดท้าย" เป็น Kotlin ธรรมดา ในที่นี้ เราจะจับคู่ตำแหน่งของฟิลด์กับป้ายกำกับการทำงานที่ควรแสดง

fun imeActionFor(index: Int, lastIndex: Int): String =
    if (index == lastIndex) "Done" else "Next"

fun main() {
    val fields = listOf("name", "email", "password")
    fields.forEachIndexed { i, field ->
        println("$field -> ${imeActionFor(i, fields.lastIndex)}")
    }
}

ตรวจสอบความเข้าใจ

คุณต้องการให้ปุ่มมุมขวาล่างของแป้นพิมพ์แสดงคำว่า "ถัดไป" และเมื่อแตะแล้วให้ย้ายโฟกัสไปยังฟิลด์ด้านล่าง คุณต้องใช้องค์ประกอบสองอย่างใด

สรุปทบทวน

ตอนนี้คุณสามารถสร้างฟอร์มที่ทำงานร่วมกับแป้นพิมพ์ได้อย่างเหมาะสมแล้ว:

  • KeyboardOptions กำหนด keyboardType, imeAction, การขึ้นต้นตัวพิมพ์ใหญ่ และการแก้ไขอัตโนมัติ
  • ปกปิดรหัสผ่านด้วย PasswordVisualTransformation
  • KeyboardActions ตอบสนองต่อ Next/Done/Search
  • LocalFocusManager ย้ายหรือล้างโฟกัส ส่วน FocusRequester ใช้กำหนดโฟกัสให้ฟิลด์เมื่อจำเป็น

นี่เป็นการจบชุดเครื่องมือสร้างฟอร์ม ซึ่งครอบคลุมอินพุต สถานะ การตรวจสอบ และแป้นพิมพ์ คุณพร้อมสร้างฟอร์ม Compose ที่ใช้งานดีและเป็นมิตรต่อผู้ใช้แล้ว

คำถามที่พบบ่อย

บทเรียน “ตัวเลือกและการทำงานของแป้นพิมพ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวเลือกและการทำงานของแป้นพิมพ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวเลือกและการทำงานของแป้นพิมพ์”

ชนิดแป้นพิมพ์ การทำงานของ IME และโฟกัส คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวเลือกและการทำงานของแป้นพิมพ์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม

ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. TextField และข้อมูลนำเข้าจากผู้ใช้
  2. การจัดการสถานะแบบฟอร์ม
  3. การตรวจสอบข้อมูลนำเข้า
  4. ตัวเลือกและการทำงานของแป้นพิมพ์
← กลับไปที่ Android Academy