โฟกัสในช่องข้อความ

เมื่อผู้ใช้ไปยังส่วนต่างๆ ของ 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 โดยไม่มีแป้นพิมพ์จริง ให้ทำดังนี้

  1. การย้ายโฟกัสไปยังช่องข้อความจะแสดง แป้นพิมพ์เสมือนบนหน้าจอโดยอัตโนมัติ
  2. ผู้ใช้ไปยังส่วนต่างๆ ของแป้นพิมพ์เสมือน โดยใช้ D-pad
  3. การกดปุ่มย้อนกลับจะปิดแป้นพิมพ์เสมือนขณะที่ยังคงโฟกัสไว้ที่ช่องข้อความ
  4. เมื่อปิดแป้นพิมพ์เสมือนแล้ว การกดปุ่มทิศทางของ D-pad จะย้ายโฟกัสไปยังเป้าหมายโฟกัสที่อยู่ใกล้เคียงบนหน้าจอ
  5. การกดปุ่มย้อนกลับครั้งที่ 2 จะทริกเกอร์ การนำทางย้อนกลับของระบบแบบมาตรฐาน