علاوه بر روشهای ورودی نرم (مانند صفحهکلیدهای روی صفحه) Android از صفحهکلیدهای فیزیکی متصل به دستگاه پشتیبانی میکند. یک صفحه کلید یک حالت مناسب برای ورودی متن و راهی برای کاربران برای پیمایش و تعامل با برنامه شما ارائه می دهد. اگرچه اکثر دستگاه های دستی مانند تلفن ها از لمس به عنوان حالت اصلی تعامل استفاده می کنند، تبلت ها و دستگاه های مشابه محبوب هستند و بسیاری از کاربران دوست دارند لوازم جانبی صفحه کلید را به آنها وصل کنند.
از آنجایی که دستگاههای مجهز به اندروید بیشتر این نوع تجربه را ارائه میدهند، مهم است که برنامه خود را برای پشتیبانی از تعامل از طریق صفحه کلید بهینه کنید. این سند توضیح می دهد که چگونه می توانید ناوبری را با صفحه کلید بهبود بخشید.
اپلیکیشن خود را تست کنید
ممکن است کاربران قبلاً بتوانند با استفاده از صفحه کلید برنامه شما را هدایت کنند، زیرا سیستم Android به طور پیش فرض بیشتر رفتارهای ضروری را فعال می کند.
همه ویجت های تعاملی ارائه شده توسط چارچوب Android - مانند Button
و EditText
- قابل فوکوس هستند. این بدان معناست که کاربران میتوانند با دستگاههای کنترلی مانند D-pad یا صفحهکلید حرکت کنند و هر ویجت وقتی فوکوس ورودی را به دست میآورد میدرخشد یا ظاهر خود را تغییر میدهد.
برای آزمایش برنامه خود، مراحل زیر را انجام دهید:
- برنامه خود را روی دستگاهی نصب کنید که صفحه کلید سخت افزاری ارائه می دهد.
اگر دستگاه سخت افزاری با صفحه کلید ندارید، یک صفحه کلید بلوتوث یا یک صفحه کلید USB وصل کنید.
همچنین می توانید از شبیه ساز اندروید استفاده کنید:
- در AVD Manager، روی New Device کلیک کنید یا یک نمایه موجود را انتخاب کنید و روی Clone کلیک کنید.
- در پنجره ای که ظاهر می شود، مطمئن شوید که Keyboard و DPad فعال هستند.
- برای آزمایش برنامه خود، فقط از کلید Tab برای پیمایش در رابط کاربری خود استفاده کنید. مطمئن شوید که هر کنترل UI همانطور که انتظار می رود تمرکز می کند.
به دنبال مواردی باشید که در آن فوکوس به صورت غیرمنتظره ای حرکت می کند.
- دوباره از ابتدای برنامهتان شروع کنید و با استفاده از کنترلهای جهت مانند کلیدهای پیکان روی صفحهکلید، در رابط کاربری خود پیمایش کنید. از هر عنصر قابل تمرکز در رابط کاربری خود، بالا ، پایین ، چپ و راست را فشار دهید.
به دنبال مواردی باشید که در آن فوکوس به صورت غیرمنتظره ای حرکت می کند.
اگر با مواردی مواجه شدید که در آن پیمایش با کلید 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 عمل میکند. این سیستم "بهترین حدس" را ارائه می دهد که بر اساس چیدمان نماهای روی صفحه، روی کدام نما در جهت معین تمرکز شود. با این حال، گاهی اوقات سیستم اشتباه حدس می زند.
اگر سیستم هنگام پیمایش در جهت معین، فوکوس را به نمای مناسب منتقل نمی کند، مشخص کنید که کدام نما باید فوکوس را با ویژگی های زیر دریافت کند:
هر مشخصه نمای بعدی را تعیین می کند تا زمانی که کاربر در آن جهت حرکت می کند، همانطور که توسط شناسه view مشخص شده است، فوکوس دریافت کند. این در مثال زیر نشان داده شده است:
<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" ... />
منابع اضافی
به منابع مرتبط زیر مراجعه کنید: