ตัวเลือกและการทำงานของแป้นพิมพ์
ชนิดแป้นพิมพ์ การทำงานของ 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/SearchLocalFocusManagerย้ายหรือล้างโฟกัส ส่วน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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- TextField และข้อมูลนำเข้าจากผู้ใช้
- การจัดการสถานะแบบฟอร์ม
- การตรวจสอบข้อมูลนำเข้า
- ตัวเลือกและการทำงานของแป้นพิมพ์