Tập trung vào các trường văn bản

Khi người dùng thao tác trên giao diện người dùng Compose bằng bàn phím phần cứng, D-pad hoặc bộ điều khiển xoay, các trường văn bản sẽ tham gia vào hoạt động điều hướng tâm điểm cùng với các mục tiêu tâm điểm khác.

Theo mặc định, tiêu điểm không bị giữ lại trong các trường văn bản. Bạn không cần thêm trình xử lý sự kiện chính tuỳ chỉnh (onKeyEvent hoặc onPreviewKeyEvent) để cho phép người dùng rời khỏi trường văn bản. Người dùng luôn có thể thoát bằng cách sử dụng tổ hợp phím Shift+Tab hoặc bằng cách di chuyển qua ranh giới văn bản bằng các phím mũi tên.

Bạn có thể dùng KeyboardOptions để cung cấp một thao tác trực quan trên bàn phím phần mềm, phối hợp với thao tác điều hướng trên bàn phím phần cứng. Ví dụ: ImeAction.Next di chuyển tiêu điểm đến mục tiêu lấy tiêu điểm tiếp theo.

Duyệt qua tiêu điểm theo một chiều

Trong quá trình duyệt qua tiêu điểm theo một chiều, hành vi của phím Tab phụ thuộc vào lineLimits được định cấu hình trên trường văn bản:

  • Trường văn bản một dòng (TextFieldLineLimits.SingleLine) Khi bạn nhấn phím Tab, tiêu điểm sẽ di chuyển đến mục tiêu lấy tiêu điểm tiếp theo trong giao diện người dùng.
  • Trường văn bản nhiều dòng (TextFieldLineLimits.MultiLine() hoặc mặc định): Nhấn phím Tab để chèn ký tự tab (\t) vào vùng đệm văn bản thay vì di chuyển tiêu điểm.
  • Di chuyển ngược (Shift+Tab): Nhấn tổ hợp phím Shift+Tab để di chuyển tiêu điểm về mục tiêu trước đó trong cả trường văn bản một dòng và nhiều dòng.

// 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()
)

Duyệt qua tiêu điểm theo hai chiều

Khi sử dụng các phím mũi tên (hoặc D-pad), các phím chỉ hướng trước tiên sẽ di chuyển con trỏ văn bản (con nháy) trong trường văn bản:

  • Di chuyển theo chiều dọc (lên / xuống): Nhấn phím Down để di chuyển con nháy xuống từng dòng. Khi con nháy đến dòng cuối cùng, việc nhấn lại phím Xuống sẽ chuyển tiêu điểm đến mục tiêu lấy tiêu điểm liền kề bên dưới trường văn bản. Thao tác nhấn phím Lên trên dòng đầu tiên sẽ di chuyển tiêu điểm đến mục tiêu lấy tiêu điểm trước đó.
  • Thao tác di chuyển theo chiều ngang (trái / phải / bắt đầu / kết thúc): Khi bạn nhấn các phím mũi tên ngang, con nháy sẽ di chuyển qua các ký tự. Khi con nháy đến đầu hoặc cuối vùng đệm văn bản, thao tác nhấn lại phím định hướng sẽ chuyển tiêu điểm đến mục tiêu lấy tiêu điểm liền kề theo hướng đó.

Trường văn bản trên Android TV

Trên Android TV, sử dụng bộ điều khiển D-pad mà không cần bàn phím vật lý:

  1. Khi bạn di chuyển tiêu điểm đến một trường văn bản, bàn phím phần mềm trên màn hình sẽ tự động xuất hiện.
  2. Người dùng di chuyển các phím của bàn phím phần mềm bằng D-pad.
  3. Nhấn nút Quay lại để đóng bàn phím phần mềm trong khi vẫn giữ tiêu điểm vào trường văn bản.
  4. Sau khi đóng bàn phím phần mềm, thao tác nhấn phím định hướng trên D-pad sẽ di chuyển tiêu điểm đến các mục tiêu lấy tiêu điểm lân cận trên màn hình.
  5. Khi bạn nhấn nút Quay lại lần thứ hai, thao tác điều hướng quay lại chuẩn của hệ thống sẽ được kích hoạt.