بالإضافة إلى أساليب الإدخال غير القابلة للبرمجة، مثل لوحات المفاتيح على الشاشة، يتيح Android استخدام لوحات المفاتيح الخارجية المُثبَّتة على الجهاز. توفّر لوحة المفاتيح وضعًا ملائمًا لإدخال النصوص وطريقة للمستخدمين للتنقل في تطبيقك والتفاعل معه. على الرغم من أنّ معظم الأجهزة المزوّدة بشاشة لمس، مثل الهواتف، تستخدم اللمس كوضع التفاعل الأساسي، إلا أنّ الأجهزة اللوحية والأجهزة المشابهة رائجة، ويحبّذ العديد من المستخدمين ربط ملحقات لوحة المفاتيح بها.
مع توفّر هذا النوع من التجارب على المزيد من أجهزة Android، من المهم تحسين تطبيقك ليتيح التفاعل من خلال لوحة مفاتيح. يوضّح هذا المستند كيفية تحسين التنقّل باستخدام لوحة مفاتيح.
اختبار تطبيقك
قد يكون بإمكان المستخدمين التنقّل في تطبيقك باستخدام لوحة مفاتيح، لأنّه يفعّل نظام Android معظم السلوكيات اللازمة تلقائيًا.
يمكن تركيز جميع التطبيقات المصغّرة التفاعلية التي يوفّرها إطار عمل Android، مثل
Button
و
EditText
. وهذا يعني أنّه يمكن للمستخدمين التنقّل باستخدام أجهزة التحكّم، مثل لوحة التوجيه أو keyboard، ويتوهج كل تطبيق مصغّر أو يتغيّر مظهره عندما
يكتسب تركيز الإدخال.
لاختبار تطبيقك، اتّبِع الإجراء التالي:
- ثبِّت تطبيقك على جهاز يتضمّن لوحة مفاتيح.
إذا لم يكن لديك جهاز أجهزة يتضمّن لوحة مفاتيح، يمكنك توصيل لوحة مفاتيح تعمل عبر البلوتوث أو لوحة مفاتيح USB.
يمكنك أيضًا استخدام محاكي Android باتّباع الخطوات التالية:
- في "مدير أجهزة Android الافتراضية"، انقر على جهاز جديد أو اختَر ملفًا شخصيًا حاليًا وانقر على نسخ.
- في النافذة التي تظهر، تأكَّد من تفعيل لوحة المفاتيح وDPad.
- لاختبار تطبيقك، استخدِم مفتاح Tab فقط للتنقّل في
واجهة المستخدم. تأكَّد من أنّ كل عنصر تحكّم في واجهة المستخدم يحصل على التركيز على النحو المتوقّع.
ابحث عن أي حالات ينتقل فيها التركيز بطريقة غير متوقّعة.
- ابدأ من جديد من بداية تطبيقك وانتقِل في واجهة المستخدم
باستخدام عناصر التحكّم في الاتجاهات، مثل مفاتيح الأسهم على لوحة المفاتيح. من كل عنصر
يمكن التركيز عليه في واجهة المستخدم، اضغط على أعلى وأسفل
يسار ويمين.
ابحث عن أي حالات ينتقل فيها التركيز بطريقة غير متوقّعة.
إذا واجهت أي حالات لا يؤدي فيها التنقّل باستخدام مفتاح 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
.
التعامل مع التنقّل الاتجاهي
يمكن للمستخدمين أيضًا التنقّل في تطبيقك باستخدام مفاتيح الأسهم على لوحة المفاتيح، والتي تعمل بالطريقة نفسها عند التنقّل باستخدام لوحة ألعاب أو كرة مسار. يقدّم النظام "أفضل تخمين" للعرض الذي يجب التركيز عليه في اتجاه معيّن استنادًا إلى تنسيق طرق العرض على الشاشة. ومع ذلك، قد يخطئ النظام أحيانًا في التخمين.
إذا لم ينقل النظام التركيز إلى طريقة العرض المناسبة عند التنقّل في اتجاه معيّن، حدِّد طريقة العرض التي يجب أن تتلقّى التركيز باستخدام السمات التالية:
وتحدِّد كل سمة العرض التالي الذي سيتلقّى التركيز عندما يتنقّل المستخدِم في هذا الاتجاه، كما هو محدّد بمعرّف العرض. يظهر ذلك في المثال التالي:
<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" ... />
مصادر إضافية
يُرجى الرجوع إلى المراجع ذات الصلة التالية: