เมื่อผู้ใช้ไปยังส่วนต่างๆ ของ UI ของ Compose ด้วยแป้นพิมพ์ฮาร์ดแวร์, D-pad หรือปุ่มหมุนควบคุม ช่องข้อความจะเข้าร่วมในการไปยังส่วนต่างๆ ของโฟกัสควบคู่ไปกับเป้าหมายโฟกัสอื่นๆ
โดยค่าเริ่มต้น ระบบจะไม่ล็อกโฟกัสไว้ในช่องข้อความ คุณไม่จำเป็นต้องเพิ่มเครื่องจัดการเหตุการณ์คีย์ที่กำหนดเอง (onKeyEvent หรือ onPreviewKeyEvent) เพื่ออนุญาตให้ผู้ใช้ออกจากช่องข้อความ ผู้ใช้สามารถออกจากโหมดนี้ได้ทุกเมื่อโดยใช้ Shift+Tab หรือโดยการไปยังส่วนต่างๆ นอกขอบเขตข้อความด้วยปุ่มทิศทาง
คุณสามารถใช้ KeyboardOptions เพื่อให้การทำงานของแป้นพิมพ์เสมือนที่ใช้งานง่ายซึ่งทำงานร่วมกับการไปยังส่วนต่างๆ ด้วยแป้นพิมพ์จริง
เช่น ImeAction.Next จะย้ายโฟกัสไปยังเป้าหมายโฟกัสถัดไป
การข้ามโฟกัสแบบมิติเดียว
ในการข้ามโฟกัสแบบมิติเดียว ลักษณะการทำงานของแป้น Tab จะขึ้นอยู่กับ lineLimits ที่กำหนดค่าไว้ในช่องข้อความ ดังนี้
- ช่องข้อความบรรทัดเดียว (
TextFieldLineLimits.SingleLine) การกดปุ่ม Tab จะย้ายโฟกัสไปยังเป้าหมายโฟกัสถัดไปใน UI - ช่องข้อความหลายบรรทัด (
TextFieldLineLimits.MultiLine()หรือค่าเริ่มต้น): การกดแป้น 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 ปิดอยู่
- เป้าหมายโฟกัส
- ลำดับการส่งผ่านโฟกัส
- เป้าหมายโฟกัสของกลุ่ม
- ทดสอบการไปยังส่วนต่างๆ ด้วยการโฟกัส