Hỗ trợ điều hướng bằng bàn phím

Ngoài các phương thức nhập mềm (chẳng hạn như bàn phím ảo), Android còn hỗ trợ bàn phím thực gắn với thiết bị. Bàn phím cung cấp chế độ thuận tiện để nhập văn bản và là cách để người dùng điều hướng cũng như tương tác với ứng dụng của bạn. Mặc dù hầu hết các thiết bị cầm tay như điện thoại sử dụng chế độ cảm ứng làm chế độ tương tác chính, nhưng máy tính bảng và các thiết bị tương tự rất phổ biến và nhiều người dùng thích gắn phụ kiện bàn phím vào các thiết bị đó.

Khi ngày càng có nhiều thiết bị chạy Android cung cấp loại trải nghiệm này, bạn cần phải tối ưu hoá ứng dụng để hỗ trợ tương tác thông qua bàn phím. Tài liệu này mô tả cách bạn có thể cải thiện khả năng điều hướng bằng bàn phím.

Kiểm thử ứng dụng

Người dùng có thể đã có thể điều hướng ứng dụng của bạn bằng bàn phím, vì hệ thống Android cho phép hầu hết các hành vi cần thiết theo mặc định.

Tất cả tiện ích tương tác do khung Android cung cấp (chẳng hạn như ButtonEditText) đều có thể lấy tiêu điểm. Điều này có nghĩa là người dùng có thể điều hướng bằng các thiết bị điều khiển như bàn phím hoặc D-pad, đồng thời mỗi tiện ích sẽ phát sáng hoặc thay đổi giao diện khi nhận được tiêu điểm nhập.

Để kiểm thử ứng dụng, hãy thực hiện quy trình sau:

  1. Cài đặt ứng dụng của bạn trên một thiết bị có bàn phím phần cứng.

    Nếu bạn không có thiết bị phần cứng có bàn phím, hãy kết nối bàn phím Bluetooth hoặc bàn phím USB.

    Bạn cũng có thể sử dụng trình mô phỏng Android:

    1. Trong Trình quản lý thiết bị ảo Android, hãy nhấp vào New Device (Thiết bị mới) hoặc chọn một hồ sơ hiện có rồi nhấp vào Clone (Sao chép).
    2. Trong cửa sổ xuất hiện, hãy đảm bảo bạn đã bật Keyboard (Bàn phím) và DPad (Bàn phím di chuyển).
  2. Để kiểm thử ứng dụng, bạn chỉ cần sử dụng phím Tab để di chuyển qua giao diện người dùng. Đảm bảo mỗi thành phần điều khiển trên giao diện người dùng đều có tiêu điểm như dự kiến.

    Tìm mọi trường hợp tiêu điểm di chuyển theo cách không mong muốn.

  3. Bắt đầu lại từ đầu ứng dụng và điều hướng qua giao diện người dùng bằng các nút điều khiển hướng như các phím mũi tên trên bàn phím. Từ mỗi thành phần có thể lấy tiêu điểm trong giao diện người dùng, hãy nhấn phím Lên, Xuống, TráiPhải.

    Tìm mọi trường hợp tiêu điểm di chuyển theo cách không mong muốn.

Nếu bạn gặp phải trường hợp thao tác bằng phím Tab hoặc các nút điều khiển hướng không hoạt động như mong đợi, hãy chỉ định vị trí tiêu điểm phải nằm trong bố cục của bạn, như đã thảo luận trong các phần sau.

Xử lý thao tác điều hướng bằng thẻ

Khi người dùng điều hướng ứng dụng bằng phím Tab trên bàn phím, hệ thống sẽ chuyển tiêu điểm đầu vào giữa các phần tử dựa trên thứ tự xuất hiện của các phần tử đó trong bố cục. Ví dụ: nếu sử dụng bố cục tương đối và thứ tự các phần tử trên màn hình khác với thứ tự trong tệp, thì bạn có thể cần chỉ định thứ tự tiêu điểm theo cách thủ công.

Ví dụ: trong bố cục sau, hai nút được căn chỉnh ở bên phải và một trường văn bản được căn chỉnh ở bên trái của nút thứ hai. Để chuyển tiêu điểm từ nút đầu tiên sang trường văn bản, rồi đến nút thứ hai, bố cục cần xác định rõ thứ tự tiêu điểm cho từng phần tử có thể lấy tiêu điểm bằng thuộc tính android:nextFocusForward.

<androidx.constraintlayout.widget.ConstraintLayout ...>
    <Button
        android:id="@+id/button1"
        android:nextFocusForward="@+id/editText1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        ... />
    <Button
        android:id="@+id/button2"
        android:nextFocusForward="@+id/button1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button1"
        ... />
    <EditText
        android:id="@id/editText1"
        android:nextFocusForward="@+id/button2"
        app:layout_constraintBottom_toBottomOf="@+id/button2"
        app:layout_constraintRight_toLeftOf="@id/button2
        ...  />
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

Giờ đây, thay vì di chuyển tiêu điểm từ button1 sang button2 rồi đến editText1, tiêu điểm sẽ di chuyển một cách thích hợp theo giao diện trên màn hình: từ button1 sang editText1 rồi đến button2.

Xử lý thao tác điều hướng theo hướng

Người dùng cũng có thể điều hướng ứng dụng của bạn bằng các phím mũi tên trên bàn phím. Các phím này hoạt động giống như khi điều hướng bằng D-pad hoặc bi xoay. Hệ thống cung cấp "đáp án dự đoán tốt nhất" về chế độ xem cần đặt tiêu điểm theo một hướng nhất định dựa trên bố cục của các chế độ xem trên màn hình. Tuy nhiên, đôi khi hệ thống sẽ đoán sai.

Nếu hệ thống không chuyển tiêu điểm đến thành phần hiển thị thích hợp khi điều hướng theo một hướng nhất định, hãy chỉ định thành phần hiển thị phải nhận tiêu điểm bằng các thuộc tính sau:

Mỗi thuộc tính chỉ định thành phần hiển thị tiếp theo sẽ nhận tiêu điểm khi người dùng di chuyển theo hướng đó, như được chỉ định bằng mã thành phần hiển thị. Điều này được thể hiện trong ví dụ sau:

<Button
    android:id="@+id/button1"
    android:nextFocusRight="@+id/button2"
    android:nextFocusDown="@+id/editText1"
    ... />
<Button
    android:id="@id/button2"
    android:nextFocusLeft="@id/button1"
    android:nextFocusDown="@id/editText1"
    ... />
<EditText
    android:id="@id/editText1"
    android:nextFocusUp="@id/button1"
    ...  />

Tài nguyên khác

Hãy tham khảo các tài nguyên liên quan sau: