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ư trên màn hình) bàn phím – Android hỗ trợ bàn phím vật lý gắn với thiết bị. Đáp bàn phím cung cấp chế độ thuận tiện để nhập văn bản và giúp người dùng điều hướng và 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 thao tác chạm làm chế độ tương tác chính, máy tính bảng và các chế độ cài đặt tương tự thiết bị phổ biến và nhiều người dùng thích gắn phụ kiện bàn phím vào chúng.

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, điều quan trọng là để tối ưu hoá ứng dụng nhằm hỗ trợ hoạt động tương tác thông qua bàn phím. Chiến dịch này tài liệu mô tả cách bạn có thể cải thiện điều hướng bằng bàn phím.

Kiểm thử ứng dụng

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

Tất cả tiện ích tương tác do khung Android cung cấp, chẳng hạn như ButtonEditText—là có thể làm tâm đ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ư D-pad hoặc bàn phím và mỗi tiện ích sẽ phát sáng hoặc thay đổi giao diện khi lấy 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 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ó của bạn rồi nhấp vào Sao chép.
    2. Trong cửa sổ xuất hiện, hãy đảm bảo KeyboardDPad đều bật.
  2. Để thử nghiệm ứng dụng, chỉ sử dụng phím Tab để điều hướng 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 lấy được tiêu điểm như dự kiến.

    Tìm kiếm mọi trường hợp mà tiêu điểm di chuyển bất ngờ theo cách riêng.

  3. Bắt đầu lại từ đầu ứng dụng và di chuyển trong giao diện người dùng bằng cách sử dụ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 phần tử có thể làm tâm điểm trên giao diện người dùng, hãy nhấn phím Up (Lên), Down (Xuống) TráiPhải.

    Tìm kiếm mọi trường hợp mà tiêu điểm di chuyển bất ngờ theo cách riêng.

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

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

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

Ví dụ: trong bố cục sau đây, 2 nút được căn chỉnh về bên phải và một trường văn bản được căn chỉnh ở bên trái nút thứ hai. Cần vượt qua đặt tiêu điểm từ nút đầu tiên đến trường văn bản, sau đó đến nút thứ hai, bố cục cần xác định rõ thứ tự tiêu điểm cho mỗi đối tượng có thể làm tâm điểm phần tử có phần tử 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>

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

Xử lý tính năng điều hướng theo hướng

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

Nếu hệ thống không chuyển tiêu điểm đến chế độ xem thích hợp khi điều hướng trong một hướng cho sẵn, chỉ định khung hiển thị nào phải nhận tiêu điểm bằng các giá trị sau thuộc tính:

Mỗi thuộc tính chỉ định thành phần hiển thị tiếp theo cần nhận tiêu điểm khi người dùng điều hướng theo hướng đó, như được xác định bởi ID chế độ xem. Đ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: