يتيح نظام Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث للمستخدمين الكتابة في أي حقل إدخال نص في أي تطبيق باستخدام قلم الشاشة. حقول إدخال النصوص على Android، بما في ذلك مكوّنات
EditText
والتطبيقات المصغّرة للنصوص WebView
،
تتيح إمكانية الإدخال باستخدام قلم الشاشة تلقائيًا.
ومع ذلك، إذا كان تطبيقك يتطلب حقول إدخال نصية مخصصة (راجع أدوات تحرير نصوص مخصصة) أو كان يحتوي على تنسيق معقد مع حقول إدخال نص تظهر على سطح الرسم، ستحتاج إلى تخصيص تطبيقك.
EditText
تكون الكتابة بخط اليد بقلم الشاشة مفعَّلة في جميع حقول EditText
تلقائيًا على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث. يبدأ وضع الكتابة بخط اليد في EditText
عندما يتم رصد حدث حركة قلم الشاشة ضمن حدود الكتابة بخط اليد في العرض.
تشتمل حدود الكتابة بخط اليد على مساحة متروكة رأسية تبلغ 40 وحدة بكسل مستقلة الكثافة (dp) و10 وحدات بكسل مستقلة الكثافة (dp) للمساحات المتروكة الأفقية حول العرض. عدِّل حدود الكتابة بخط اليد باستخدام الرمز
setHandwritingBoundsOffsets()
.
إيقاف الكتابة بخط اليد باستخدام
setAutoHandwritingEnabled(false)
![حقل إدخال يحتوي على مستطيل محيط يشير إلى حدود رصد أحداث حركة قلم الشاشة.](https://developer.android.com/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=5&hl=ar)
EditText
).
تفويض الإدخال
يمكن للتطبيقات عرض عناصر واجهة المستخدم النائبة التي تبدو كحقول إدخال نصية، ولكنها في الواقع عناصر ثابتة لواجهة المستخدم بدون إمكانية إدخال النص. تُعد حقول البحث مثالاً شائعًا. يؤدي النقر على عنصر واجهة المستخدم الثابت إلى تشغيل الانتقال إلى واجهة مستخدم جديدة تحتوي على حقل إدخال نصي عملي يركز على الإدخال.
تفويض إدخال قلم الشاشة
استخدِم واجهات برمجة التطبيقات لتفويض الكتابة بخط اليد لإتاحة إمكانية إدخال الكتابة بخط اليد بقلم الشاشة في حقول الإدخال النائب (راجِع setHandwritingDelegatorCallback()
وsetIsHandwritingDelegate()
).
تم ضبط عنصر واجهة المستخدم النائب لتفويض الكتابة بخط اليد إلى حقل إدخال وظيفي، على سبيل المثال:
Kotlin
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback { showAndFocusDelegateInputField() } delegateInputField.setIsHandwritingDelegate(true) }
Java
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate); delegateInputField.setIsHandwritingDelegate(true); }
تؤدي حركة قلم الشاشة على عرض حقل إدخال النص النائب إلى استدعاء معاودة الاتصال.
يؤدي رد الاتصال إلى تشغيل انتقال واجهة المستخدم لإظهار والتركيز على حقل الإدخال
الوظيفي. عادةً ما يكون تنفيذ معاودة الاتصال مماثلاً لتنفيذ
أداة معالجة النقرة على العنصر النائب. عندما ينشئ حقل الإدخال الوظيفي
InputConnection
،
يبدأ وضع الكتابة بخط اليد بقلم الشاشة.
التصميم متعدد الأبعاد
توفِّر مكتبة
com.google.android.material.search
فئتَي
SearchBar
وSearchView
لتسهيل تنفيذ نمط واجهة المستخدم النائب.
ترتبط العناصر النائبة وطرق عرض البحث الوظيفية بـ
setUpWithSearchBar()
.
يتم ضبط ميزة "تفويض الكتابة بخط اليد" في مكتبة المواد بدون الحاجة إلى تطوير تطبيقات إضافية.
التداخل مع أسطح الرسم
إذا كان تطبيقك يحتوي على سطح رسم يحتوي على حقل نصي متراكب على السطح،
قد تحتاج إلى إيقاف الكتابة بخط اليد بقلم الشاشة للسماح للمستخدم بالرسم. يمكنك الاطّلاع على setAutoHandwritingEnabled()
.
الاختبار
تتوفّر ميزة الكتابة بخط اليد بقلم الشاشة على الأجهزة التي تعمل بالإصدار 14 من نظام التشغيل Android والإصدارات الأحدث والتي تتضمّن جهاز إدخال متوافق بقلم الشاشة وأداة تعديل طريقة الإدخال (IME) تتوافق مع واجهات برمجة التطبيقات للكتابة بخط اليد بقلم الشاشة على نظام التشغيل Android 14.
إذا لم يكن لديك جهاز إدخال بقلم الشاشة، يمكنك محاكاة إدخال قلم الشاشة على أي جهاز يتمتع بإمكانية الوصول إلى الجذر (بما في ذلك أدوات المحاكاة) باستخدام أوامر Android Debug Bridge (adb) التالية:
// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start
// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true
يمكنك استخدام إصدار Gboard التجريبي لإجراء الاختبار إذا كنت تستخدم جهازًا لا يتوافق مع قلم الشاشة.
مصادر إضافية
- التصميم المتعدد الأبعاد: الحقول النصية
- أدوات تحرير النصوص المخصَّصة