پشتیبانی از ناوبری صفحه کلید

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه از لمس و ورودی در Compose استفاده کنید.

علاوه بر روش‌های ورودی نرم - مانند صفحه کلیدهای روی صفحه - اندروید از صفحه کلیدهای فیزیکی متصل به دستگاه پشتیبانی می‌کند. یک صفحه کلید، حالت مناسبی برای ورودی متن و راهی برای کاربران جهت پیمایش و تعامل با برنامه شما ارائه می‌دهد. اگرچه اکثر دستگاه‌های دستی مانند تلفن‌ها از لمس به عنوان حالت اصلی تعامل استفاده می‌کنند، تبلت‌ها و دستگاه‌های مشابه محبوب هستند و بسیاری از کاربران دوست دارند لوازم جانبی صفحه کلید را به آنها متصل کنند.

از آنجایی که دستگاه‌های اندروید بیشتری این نوع تجربه را ارائه می‌دهند، مهم است که برنامه خود را برای پشتیبانی از تعامل از طریق صفحه کلید بهینه کنید. این سند نحوه بهبود ناوبری با صفحه کلید را شرح می‌دهد.

برنامه خود را آزمایش کنید

کاربران ممکن است از قبل بتوانند با استفاده از صفحه کلید در برنامه شما حرکت کنند، زیرا سیستم اندروید به طور پیش فرض اکثر رفتارهای لازم را فعال می‌کند.

تمام ویجت‌های تعاملی ارائه شده توسط چارچوب اندروید - مانند Button و EditText - قابل فوکوس هستند. این بدان معناست که کاربران می‌توانند با دستگاه‌های کنترلی مانند D-pad یا صفحه کلید حرکت کنند و هر ویجت هنگام دریافت فوکوس ورودی، می‌درخشد یا ظاهر خود را تغییر می‌دهد.

برای آزمایش برنامه خود، مراحل زیر را انجام دهید:

  1. برنامه خود را روی دستگاهی که صفحه کلید سخت افزاری ارائه می‌دهد نصب کنید.

    اگر دستگاه سخت‌افزاری با کیبورد ندارید، یک کیبورد بلوتوث یا کیبورد USB وصل کنید.

    همچنین می‌توانید از شبیه‌ساز اندروید استفاده کنید:

    1. در AVD Manager، یا روی «دستگاه جدید» کلیک کنید یا یک پروفایل موجود را انتخاب کرده و روی «کلون» کلیک کنید.
    2. در پنجره‌ای که ظاهر می‌شود، مطمئن شوید که Keyboard و 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 یا trackball عمل می‌کند. سیستم بر اساس چیدمان نماهای روی صفحه، "بهترین حدس" را برای اینکه کدام نما در جهت مشخص شده فوکوس کند، ارائه می‌دهد. با این حال، گاهی اوقات سیستم اشتباه حدس می‌زند.

اگر سیستم هنگام پیمایش در یک جهت مشخص، فوکوس را به نمای مناسب منتقل نمی‌کند، با استفاده از ویژگی‌های زیر مشخص کنید که کدام نما باید فوکوس را دریافت کند:

هر ویژگی، نمای بعدی را که هنگام پیمایش کاربر در آن جهت، فوکوس را دریافت می‌کند، همانطور که توسط شناسه نمای مشخص شده است، مشخص می‌کند. این موضوع در مثال زیر نشان داده شده است:

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

منابع اضافی

به منابع مرتبط زیر مراجعه کنید: