เมื่อผู้ใช้ไปยังส่วนต่างๆ ของ Compose UI ด้วยแป้นพิมพ์ฮาร์ดแวร์ D-pad หรือตัวควบคุมแบบหมุน ช่องข้อความจะเข้าร่วมการไปยังส่วนต่างๆ ด้วยโฟกัสพร้อมกับเป้าหมายโฟกัสอื่นๆ
โดยค่าเริ่มต้น ระบบจะไม่จำกัดโฟกัสไว้ในช่องข้อความ คุณไม่จำเป็นต้องเพิ่มตัวแฮนเดิลเหตุการณ์คีย์ที่กำหนดเอง (onKeyEvent หรือ onPreviewKeyEvent) เพื่ออนุญาตให้ผู้ใช้ออกจากช่องข้อความ ผู้ใช้สามารถออกได้ทุกเมื่อโดยใช้ Shift+Tab หรือโดยการไปยังส่วนต่างๆ เลยขอบเขตข้อความด้วยปุ่มลูกศร
KeyboardOptions สามารถใช้เพื่อมอบการทำงานของแป้นพิมพ์เสมือนที่ใช้งานง่าย ซึ่งประสานงานกับการไปยังส่วนต่างๆ ของแป้นพิมพ์ฮาร์ดแวร์
ImeAction.Next จะย้ายโฟกัสไปยังเป้าหมายโฟกัสถัดไป เช่น
การไปยังส่วนต่างๆ โดยโฟกัสแบบมิติเดียว
ในการย้ายโฟกัสแบบมิติเดียว
ลักษณะการทำงานของปุ่ม Tab จะขึ้นอยู่กับ
lineLimits ที่กำหนดค่าไว้ในช่องข้อความ
- ฟิลด์ข้อความบรรทัดเดียว (
TextFieldLineLimits.SingleLine) การกดปุ่ม Tab จะย้ายโฟกัสไปยัง เป้าหมายโฟกัสถัดไปใน UI - ฟิลด์ข้อความหลายบรรทัด (
TextFieldLineLimits.MultiLine()หรือ ค่าเริ่มต้น): การกดแป้น Tab จะแทรกอักขระ Tab (\t) ลงใน บัฟเฟอร์ข้อความแทนที่จะย้ายโฟกัส - การนำทางย้อนกลับ (Shift+Tab): การกด Shift+Tab จะย้ายโฟกัสไปข้างหลังโดยไม่มีเงื่อนไข ไปยังเป้าหมายโฟกัสก่อนหน้า ทั้งในช่องข้อความแบบบรรทัดเดียวและหลายบรรทัด
// Single-line text field: Tab advances focus to the next focus target BasicTextField( state = singleLineState, lineLimits = TextFieldLineLimits.SingleLine, modifier = Modifier.fillMaxWidth() ) // Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target BasicTextField( state = multiLineState, lineLimits = TextFieldLineLimits.MultiLine(), modifier = Modifier.fillMaxWidth() )
การไปยังส่วนต่างๆ โดยใช้โฟกัสแบบ 2 มิติ
เมื่อใช้ปุ่มลูกศร (หรือ D-pad) ปุ่มทิศทางจะเลื่อนเคอร์เซอร์ข้อความ (เครื่องหมายแคริเอจ) ภายในช่องข้อความก่อน
- การไปยังส่วนต่างๆ ในแนวตั้ง (ขึ้น / ลง)
การกดปุ่ม
Downจะย้ายเคอร์เซอร์ลงทีละบรรทัด เมื่อเคอร์เซอร์ข้อความไปถึงบรรทัดสุดท้าย การกดปุ่มลงอีกครั้งจะโอนโฟกัส ไปยังเป้าหมายโฟกัสที่อยู่ติดกันใต้ช่องข้อความ การกดปุ่มขึ้นในบรรทัดแรกจะย้ายโฟกัส ไปยังเป้าหมายโฟกัสก่อนหน้า - การไปยังส่วนต่างๆ ในแนวนอน (ซ้าย / ขวา / เริ่ม / สิ้นสุด): การกดแป้นลูกศรแนวนอนจะเลื่อนเครื่องหมายแทรก ผ่านอักขระ เมื่อเคอร์เซอร์ข้อความไปถึงจุดเริ่มต้นหรือจุดสิ้นสุดของบัฟเฟอร์ข้อความ การกดปุ่มทิศทางอีกครั้งจะโอน โฟกัสไปยังเป้าหมายโฟกัสที่อยู่ติดกันในทิศทางนั้น
ช่องข้อความใน Android TV
ใน Android TV หากใช้ตัวควบคุม D-pad โดยไม่มีแป้นพิมพ์จริง ให้ทำดังนี้
- การย้ายโฟกัสไปยังช่องข้อความจะแสดง แป้นพิมพ์เสมือนบนหน้าจอโดยอัตโนมัติ
- ผู้ใช้ไปยังส่วนต่างๆ ของแป้นพิมพ์เสมือน โดยใช้ D-pad
- การกดปุ่มย้อนกลับจะปิดแป้นพิมพ์เสมือนขณะที่ยังคงโฟกัสไว้ที่ช่องข้อความ
- เมื่อปิดแป้นพิมพ์เสมือนแล้ว การกดปุ่มทิศทางของ D-pad จะย้ายโฟกัสไปยังเป้าหมายโฟกัสที่อยู่ใกล้เคียงบนหน้าจอ
- การกดปุ่มย้อนกลับครั้งที่ 2 จะทริกเกอร์ การนำทางย้อนกลับของระบบแบบมาตรฐาน
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- เป้าหมายโฟกัส
- ลำดับการส่งผ่านโฟกัส
- โฟกัสเป้าหมายกลุ่ม
- ทดสอบการไปยังส่วนต่างๆ โดยใช้โฟกัส