תמיכה בניווט באמצעות המקלדת

בנוסף לשיטות קלט עדין, כגון שימוש במסך מקלדות — Android תומך במקלדות פיזיות שמחוברות למכשיר. א' מציעה מצב נוח להזנת טקסט ודרך למשתמשים לנווט ולתקשר עם האפליקציה. למרות שרוב המכשירים להחזקה ביד, טלפונים משתמשים במגע כאמצעי האינטראקציה הראשי, טאבלטים הם פופולריים, ומשתמשים רבים אוהבים לצרף אביזרי מקלדת אותם.

יותר ויותר מכשירים מבוססי Android מציעים חוויה כזו, לכן חשוב לבצע אופטימיזציה של האפליקציה כדי לתמוך באינטראקציה באמצעות מקלדת. הזה מסמך מתאר כיצד לשפר את הניווט באמצעות מקלדת.

בדיקת האפליקציה

ייתכן שמשתמשים כבר יכולים לנווט באפליקציה באמצעות מקלדת, מערכת Android מפעילה את רוב ההתנהגויות הנדרשות כברירת מחדל.

כל הווידג'טים האינטראקטיביים שמסופקים על ידי Android Framework, כמו Button והקבוצה EditText – הם שניתן להתמקד בו. המשמעות היא שהמשתמשים יכולים לנווט באמצעות מכשירי בקרה כמו לחצני החיצים (D-pad) המקלדת, וכל ווידג'ט זוהר או משנה את המראה שלו באופן אחר כאשר הוא מקבל התמקדות בקלט.

כדי לבדוק את האפליקציה:

  1. להתקין את האפליקציה במכשיר שמציע מקלדת חומרה.

    אם אין לכם מכשיר חומרה עם מקלדת, צריך לחבר Bluetooth מקלדת או מקלדת USB.

    אפשר גם להשתמש באמולטור Android:

    1. ב-AVD Manager, לוחצים על מכשיר חדש או בוחרים פרופיל קיים ולוחצים על שכפול.
    2. בחלון שמופיע, מוודאים שהאפשרויות מקלדת ולחצני החיצים (DPad) הן מופעל.
  2. כדי לבדוק את האפליקציה, צריך להשתמש רק במקש Tab כדי לנווט ממשק משתמש. מוודאים שכל פקד בממשק המשתמש מקבל מיקוד כמצופה.

    חפשו מקרים שבהם הפוקוס זז באופן כללי.

  3. מתחילים שוב מתחילת האפליקציה ומנווטים בממשק המשתמש באמצעות מקשי כיוון, כמו מקשי החיצים במקלדת. מכל אחד רכיב בממשק המשתמש שאפשר להתמקד בו, לוחצים על למעלה, למטה שמאל, וימין.

    חפשו מקרים שבהם הפוקוס זז באופן כללי.

מקרים של ניווט באמצעות המקש Tab או פקדי הכיוונים לא עושים את מה שציפית, ציינו היכן המיקוד להיות בפריסה שלכם, כפי שמתואר בסעיפים הבאים.

הכינוי של הניווט בכרטיסיות

כשמשתמש מנווט באפליקציה באמצעות מקש Tab במקלדת, המערכת מעבירה את מיקוד הקלט בין אלמנטים על סמך הסדר שבו הם יופיעו בפריסה. אם משתמשים בפריסה יחסית, לדוגמה, ובסדר של הרכיבים במסך שונים מהסדר בקובץ, אולי יהיה צורך לציין באופן ידני את סדר המיקוד.

לדוגמה, בפריסה הבאה, שני לחצנים מיושרים לימין צדדי, ושדה טקסט מיושר לשמאל הלחצן השני. כדי לעבור את המיקוד מהלחצן הראשון לשדה הטקסט, ולאחר מכן בלחצן השני, צריכה להגדיר במפורש את סדר המיקוד של כל אחד של רכיבים עם 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"
    ...  />

מקורות מידע נוספים

כדאי לעיין במקורות המידע שקשורים לנושא: