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

ספריית Jetpack androidx.compose.material3 מאפשרת למשתמשים לכתוב בכל רכיב TextField בכל אפליקציה באמצעות עט סטיילוס.

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

כדי להפעיל כברירת מחדל קלט של עט סטיילוס, מוסיפים את תלות הספרייה לקובץ build.gradle של האפליקציה:

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Groovy

dependencies {
    implementation 'androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION'
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION'
    }

    kotlinOptions {
        jvmTarget = 'LATEST_JVM_VERSION'
    }
}

TextField

כברירת מחדל, כתיבה ידנית בסטיילוס מופעלת בכל רכיבי TextField ב-Android מגרסה 14 ומעלה וב-androidx.compose.foundation:foundation:1.7.0. מצב כתב יד מופעל עבור TextField כשמזוהה אירוע של תנועת עט סטיילוס בגבולות כתב היד של הרכיב.

הגבולות של כתב היד כוללים מרווח פנימי אנכי של 40dp ומרווח פנימי אופקי של 10dp מסביב לשדה הקלט.

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

אין תמיכה בכתיבה ידנית בסטיילוס בשדות TextField כשמבקשים את עורך שיטת הקלט באמצעות KeyboardType.Password.

העברת קלט

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

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

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

כדי לתמוך בהזנת כתב יד באמצעות עט סטיילוס בשדות קלט של placeholder (ראו handwritingDetector ו-handwritingHandler), צריך להשתמש בממשקי ה-API להעברת כתב יד. רכיב ה-placeholder בממשק המשתמש מוגדר להעברת כתב יד לשדה קלט פונקציונלי. דוגמה להטמעה זמינה במאמר HandwritingDetectorSample.kt.

מצב הכתיבה הידנית בסטיילוס מתחיל כששדה הקלט הפונקציונלי מקבל מיקוד ויוצר InputConnection.

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

בדיקה

כתיבה ידנית בסטיילוס נתמכת במכשירים עם 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 כדי לבדוק את התכונה.

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