علاوهبر روشهای ورودی نرمافزاری (مانند صفحهکلیدهای مجازی)، Android از صفحهکلیدهای فیزیکی متصل به دستگاه نیز پشتیبانی میکند. صفحهکلید حالت مناسبی برای ورودی نوشتار و روشی برای پیمایش و تعامل کاربران با برنامه شما ارائه میدهد. اگرچه اکثر دستگاههای دستی مانند تلفنها از لمس بهعنوان حالت اصلی تعامل استفاده میکنند، رایانههای لوحی و دستگاههای مشابه محبوب هستند و بسیاری از کاربران دوست دارند لوازم جانبی صفحهکلید را به آنها متصل کنند.
ازآنجاییکه دستگاههای بیشتری با سیستمعامل Android این نوع تجربه را ارائه میدهند، مهم است که برنامهتان را برای پشتیبانی از تعامل ازطریق صفحهکلید بهینهسازی کنید. این سند توضیح میدهد که چگونه میتوانید پیمایش با صفحهکلید را بهبود بخشید.
آزمایش برنامه
ممکن است کاربران ازقبل بتوانند بااستفاده از صفحهکلید در برنامه شما پیمایش کنند، زیرا سیستم Android اکثر رفتارهای ضروری را بهطور پیشفرض فعال میکند.
همه ابزارههای تعاملی ارائهشده توسط چارچوب Android (مثل
Button و
EditText)
کانونپذیر هستند. این یعنی کاربران میتوانند با دستگاههای کنترل مثل پد کنترل یا صفحهکلید پیمایش کنند و هر ابزاره هنگام دریافت تمرکز ورودی، میدرخشد یا ظاهرش تغییر میکند.
برای آزمایش کردن برنامهتان، مراحل زیر را انجام دهید:
- برنامهتان را در دستگاهی که صفحهکلید سختافزاری دارد نصب کنید.
اگر دستگاه سختافزاری با صفحهکلید ندارید، صفحهکلید بلوتوث یا صفحهکلید USB متصل کنید.
همچنین میتوانید از شبیهساز Android استفاده کنید:
- در «مدیر AVD»، روی دستگاه جدید کلیک کنید یا نمایه موجودی را انتخاب کنید و روی کلون کردن کلیک کنید.
- در پنجرهای که نشان داده میشود، مطمئن شوید صفحهکلید و DPad فعال باشند.
- برای آزمایش کردن برنامهتان، فقط از کلید جهش برای پیمایش در
رابط کاربری استفاده کنید. مطمئن شوید هر کنترل میانای کاربر طبق انتظار فوکوس را دریافت میکند.
به مواردی که تمرکز بهصورت غیرمنتظره جابهجا میشود توجه کنید.
- دوباره از ابتدای برنامه شروع کنید و بااستفاده از کنترلهای جهتدار مانند کلیدهای جهتنما در صفحهکلید،
در میان میانای کاربر پیمایش کنید. از هر
عنصر قابلتمرکز در واسط کاربر، کلیدهای بالا، پایین،
چپ، و راست را فشار دهید.
به مواردی که تمرکز بهصورت غیرمنتظره جابهجا میشود توجه کنید.
اگر با مواردی مواجه شدید که پیمایش با کلید 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.
مدیریت پیمایش جهتی
کاربران همچنین میتوانند بااستفاده از کلیدهای جهتنما در صفحهکلید در برنامه شما پیمایش کنند که رفتاری مشابه پیمایش با پد کنترل یا گوی پیمایش دارد. سیستم براساس چیدمان نماها در صفحه، «بهترین حدس» را برای اینکه کدام نما در جهت مشخصشده تمرکز را دریافت کند ارائه میدهد. اما گاهی سیستم اشتباه حدس میزند.
اگر سیستم هنگام پیمایش در جهتی خاص، تمرکز را به نمای مناسب منتقل نمیکند، بااستفاده از مشخصههای زیر تعیین کنید کدام نما باید تمرکز را دریافت کند:
هر مشخصه نمای بعدی را برای دریافت تمرکز هنگام پیمایش کاربر در آن جهت تعیین میکند، همانطور که توسط شناسه نما مشخص شده است. این موضوع در مثال زیر نشان داده شده است:
<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" ... />
منابع بیشتر
به منابع مرتبط زیر مراجعه کنید: