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

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

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

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

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

EditText

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

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

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

הענקת גישה לקלט

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

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

הענקת גישה לקלט של סטיילוס

משתמשים בממשקי ה-API להענקת גישה לכתב יד כדי לתמוך בהזנת כתב יד בעט stylus בשדות קלט של placeholder (ראו setHandwritingDelegatorCallback() ו-setIsHandwritingDelegate()). רכיב ממשק המשתמש של 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);
}

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

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

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 לצורך בדיקה.

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