รองรับการไปยังส่วนต่างๆ ด้วยแป้นพิมพ์

นอกเหนือจากวิธีการป้อนข้อมูลแบบนุ่มนวล เช่น การใช้บนหน้าจอ แป้นพิมพ์ - Android รองรับแป้นพิมพ์จริงที่เชื่อมต่อกับอุปกรณ์ ต แป้นพิมพ์มีโหมดที่สะดวกสำหรับการป้อนข้อความ และช่วยให้ผู้ใช้สามารถ ไปยังส่วนต่างๆ และโต้ตอบกับแอปของคุณได้ แม้ว่าอุปกรณ์มือถือส่วนใหญ่ โทรศัพท์ใช้การสัมผัสเป็นโหมดหลักในการโต้ตอบ แท็บเล็ตและโทรศัพท์ เป็นที่นิยมมากขึ้น และผู้ใช้จำนวนมากก็ชอบติดอุปกรณ์เสริมสำหรับแป้นพิมพ์ ให้พวกเขา

เนื่องจากมีอุปกรณ์ที่ใช้ Android ได้รับประสบการณ์แบบนี้มากขึ้น จึงเป็นเรื่องสำคัญ เพิ่มประสิทธิภาพแอปเพื่อรองรับการโต้ตอบผ่านแป้นพิมพ์ ช่วงเวลานี้ เอกสารนี้อธิบายวิธีที่คุณจะปรับปรุงการนำทางด้วยแป้นพิมพ์ได้

ทดสอบแอป

ผู้ใช้อาจไปยังส่วนต่างๆ ของแอปโดยใช้แป้นพิมพ์ได้อยู่แล้วเนื่องจาก ระบบ Android จะเปิดใช้ลักษณะการทำงานที่จำเป็นส่วนใหญ่โดยค่าเริ่มต้น

วิดเจ็ตแบบอินเทอร์แอกทีฟทั้งหมดที่ให้บริการโดยเฟรมเวิร์ก Android เช่น Button และ EditText - คือ โฟกัสได้ ซึ่งหมายความว่าผู้ใช้สามารถใช้อุปกรณ์ควบคุมต่างๆ เช่น D-pad หรือ แป้นพิมพ์ และวิดเจ็ตแต่ละรายการจะสว่างขึ้นหรือเปลี่ยนลักษณะที่ปรากฏเมื่อวิดเจ็ต จะได้รับการโฟกัส

หากต้องการทดสอบแอป ให้ทำตามขั้นตอนต่อไปนี้

  1. ติดตั้งแอปในอุปกรณ์ที่มีแป้นพิมพ์ที่เป็นฮาร์ดแวร์

    หากไม่มีอุปกรณ์ฮาร์ดแวร์ที่มีแป้นพิมพ์ ให้เชื่อมต่อบลูทูธ แป้นพิมพ์หรือแป้นพิมพ์ USB

    คุณยังใช้โปรแกรมจำลอง Android ได้ด้วย โดยทำดังนี้

    1. ใน AVD Manager ให้คลิกอุปกรณ์ใหม่หรือเลือก โปรไฟล์ที่มีอยู่ แล้วคลิกโคลน
    2. ในหน้าต่างที่ปรากฏขึ้น ให้ตรวจสอบว่า Keyboard และ Dpad อยู่ เปิดอยู่
  2. หากต้องการทดสอบแอป ให้ใช้เฉพาะแป้น Tab เพื่อไปยังส่วนต่างๆ UI ตรวจสอบว่าตัวควบคุม UI แต่ละรายการได้รับการโฟกัสตามที่คาดไว้

    มองหากรณีที่โฟกัสเปลี่ยนไปในสิ่งที่ไม่คาดคิด ลักษณะ

  3. เริ่มใหม่อีกครั้งตั้งแต่ต้นของแอปและไปที่ UI โดยใช้การควบคุมทิศทาง เช่น ปุ่มลูกศรบนแป้นพิมพ์ จากแต่ละรายการ องค์ประกอบที่โฟกัสได้ใน UI ให้กดขึ้น, ลง ซ้ายและขวา

    มองหากรณีที่โฟกัสเปลี่ยนไปในสิ่งที่ไม่คาดคิด ลักษณะ

หากพบกรณีที่ไปยังส่วนต่างๆ ด้วยแป้น Tab หรือการควบคุมทิศทางไม่ทำงานตามที่คุณคาดหวังไว้ ให้ระบุจุดที่ต้องโฟกัส อยู่ในเลย์เอาต์ของคุณ ตามที่ระบุไว้ในส่วนต่อไปนี้

จัดการการนำทางในแท็บ

เมื่อผู้ใช้ไปยังส่วนต่างๆ ของแอปโดยใช้แป้น Tab บนแป้นพิมพ์ ระบบจะส่งโฟกัสอินพุตระหว่างองค์ประกอบต่างๆ ตามลำดับ จะปรากฏในเลย์เอาต์ เช่น หากคุณใช้เลย์เอาต์แบบสัมพัทธ์ และลำดับ องค์ประกอบบนหน้าจอแตกต่างจากลำดับในไฟล์ คุณอาจต้องระบุลำดับโฟกัสด้วยตนเอง

ตัวอย่างเช่น ในเลย์เอาต์ต่อไปนี้ ปุ่ม 2 ปุ่มจะจัดชิดไปทางขวา และช่องข้อความอยู่ทางด้านซ้ายของปุ่มที่ 2 ในการผ่าน โฟกัสจากปุ่มแรกไปยังฟิลด์ข้อความ จากนั้นไปยังปุ่มที่สอง การจัดวางต้องกำหนดลำดับโฟกัสอย่างชัดเจนสำหรับแต่ละรายการที่โฟกัสได้ ที่มี 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>

ตอนนี้แทนที่โฟกัสจะย้ายจาก button1 ไปยัง button2 ตามด้วย editText1 ระบบจะย้ายอย่างเหมาะสม ตามลักษณะที่ปรากฏบนหน้าจอ: ตั้งแต่ button1 ถึง editText1 แล้วตามด้วย button2

จัดการการนำทางตามทิศทาง

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

หากระบบไม่ได้ส่งผ่านโฟกัสไปยังมุมมองที่เหมาะสมขณะนำทางใน ให้ระบุว่ามุมมองใดที่ต้องได้รับโฟกัส พร้อมข้อมูลต่อไปนี้ ดังนี้

แอตทริบิวต์แต่ละรายการจะกำหนดมุมมองถัดไปที่จะได้รับโฟกัสเมื่อผู้ใช้ จะไปยังทิศทางนั้นตามที่กำหนดโดยรหัสข้อมูลพร็อพเพอร์ตี้ ซึ่งจะแสดงในส่วน ตัวอย่างต่อไปนี้

<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"
    ...  />

แหล่งข้อมูลเพิ่มเติม

โปรดดูแหล่งข้อมูลที่เกี่ยวข้องต่อไปนี้