קלט סטיילוס בשדות טקסט

כדאי לנסות את הכתיבה
‫Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ל-Android. איך עובדים עם עט סטיילוס בכתיבה.

ב-Android 14 (רמת API‏ 34) ומעלה, המשתמשים יכולים לכתוב באמצעות סטיילוס בכל שדה להזנת טקסט בכל אפליקציה. שדות להזנת טקסט ב-Android, כולל רכיבי EditText ווידג'טים של טקסט WebView, תומכים כברירת מחדל בהזנה באמצעות עט סטיילוס.

עם זאת, אם האפליקציה שלכם דורשת שדות קלט טקסט מותאמים אישית (ראו עורכי טקסט מותאמים אישית) או שיש לה פריסה מורכבת עם שדות להזנת טקסט שמוצגים בשכבת-על של משטח ציור, תצטרכו להתאים אישית את האפליקציה.

איור 1. קלט בכתב יד באמצעות סטיילוס.

EditText

כברירת מחדל, כתיבה ידנית בסטיילוס מופעלת בכל השדות של EditText ב-Android מגרסה 14 ואילך. מצב כתב היד מופעל עבור EditText כשמזוהה אירוע של תנועת עט סטיילוס בגבולות כתב היד של התצוגה.

הגבולות של כתב היד כוללים שוליים אנכיים של 40dp ושוליים אופקיים של 10dp מסביב לתצוגה. אפשר לשנות את גבולות כתב היד באמצעות setHandwritingBoundsOffsets(). משביתים את הכתיבה הידנית באמצעות setAutoHandwritingEnabled(false).

שדה קלט עם מלבן מסביב שמציין את הגבולות לזיהוי אירועי תנועה של עט סטיילוס.
איור 2. גבולות הכתיבה הידנית של EditText שדות.

העברת קלט

אפליקציות יכולות להציג רכיבי placeholder של ממשק משתמש שנראים כמו שדות להזנת טקסט, אבל הם בעצם רק רכיבים סטטיים של ממשק משתמש ללא אפשרות להזנת טקסט. דוגמה נפוצה היא שדות חיפוש. הקשה על רכיב סטטי בממשק המשתמש מפעילה מעבר לממשק משתמש חדש שמכיל שדה קלט טקסט פונקציונלי עם מיקוד לקלט.

איור 3. העברת קלט מרכיב סטטי בממשק המשתמש לשדה הזנת טקסט.

העברת קלט סטיילוס

כדי לתמוך בהזנת כתב יד באמצעות עט סטיילוס בשדות קלט של placeholder (ראו setHandwritingDelegatorCallback() ו-setIsHandwritingDelegate()), צריך להשתמש בממשקי ה-API להעברת כתב יד. רכיב ה-UI של ה-placeholder מוגדר להעברת כתב יד לשדה קלט פונקציונלי, למשל:

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);
}

תנועת העט הדיגיטלי מעל תצוגת שדה הקלט של הטקסט של מציין המיקום מפעילה את הקריאה החוזרת (callback). הקריאה החוזרת מפעילה את המעבר בממשק המשתמש כדי להציג את שדה הקלט הפונקציונלי ולמקד אותו. ההטמעה של ה-callback בדרך כלל זהה להטמעה של click listener ברכיב placeholder. כששדה הקלט הפונקציונלי יוצר InputConnection, מתחיל מצב כתב יד עם סטיילוס.

איור 4. העברת קלט מסטיילוס מרכיב סטטי בממשק המשתמש לשדה להזנת טקסט.

Material Design

הספרייה com.google.android.material.search מספקת את המחלקות SearchBar ו-SearchView כדי להקל על ההטמעה של תבנית ממשק המשתמש של placeholder.

תצוגות חיפוש של placeholder ושל פונקציות מקושרות ל-setUpWithSearchBar().

ההגדרה של העברת סמכויות לזיהוי כתב יד מתבצעת בספריית Material, בלי שנדרש פיתוח נוסף באפליקציה.

חפיפה עם משטחי שרטוט

אם לאפליקציה שלכם יש משטח ציור עם שדה טקסט שמוצג מעל המשטח, יכול להיות שתצטרכו להשבית את כתב היד באמצעות העט כדי לאפשר למשתמש לצייר. מידע נוסף זמין במאמר בנושא setAutoHandwritingEnabled().

בדיקה

כתיבה ידנית בסטיילוס נתמכת במכשירים עם Android מגרסה 14 ואילך, עם מכשיר קלט תואם לסטיילוס ועורך שיטות קלט (IME) שתומך בממשקי ה-API של כתיבה ידנית בסטיילוס ב-Android 14.

אם אין לכם מכשיר קלט עם עט סטיילוס, אתם יכולים לדמות קלט של עט סטיילוס בכל מכשיר עם גישת root (כולל אמולטורים) באמצעות הפקודות הבאות של 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 כדי לבדוק את התכונה.

מקורות מידע נוספים