ورودی قلم در فیلدهای نوشتاری

کتابخانه Jetpack androidx.compose.material3 به کاربران امکان می‌دهد بااستفاده از قلم در هر مؤلفه TextField در هر برنامه‌ای بنویسند.

شکل ۱. ورودی دست‌نویس با قلم.

برای فعال کردن ورودی قلم به‌طور پیش‌فرض، وابستگی کتابخانه را به فایل build.gradle برنامه‌تان اضافه کنید:

کاتلین

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

شیک

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 زمانی شروع می‌شود که رویداد حرکت قلم در محدوده دست‌نویس مؤلفه شناسایی شود.

مرزهای دست‌نویسی شامل ۴۰ dp حاشیه داخلی عمودی و ۱۰ dp حاشیه داخلی افقی در اطراف فیلد ورودی است.

فیلد ورودی با مستطیل اطراف که مرزهای تشخیص رویدادهای حرکت قلم را نشان می‌دهد.
شکل ۲. مرزهای دست‌نویسی TextField مؤلفه.

وقتی ویرایشگر روش ورودی با KeyboardType.Password درخواست می‌شود، از دست‌نویسی با قلم برای فیلدهای TextField پشتیبانی نمی‌شود.

واگذاری ورودی

برنامه‌ها می‌توانند عناصر میانای کاربر جای‌بان را نمایش دهند که به‌نظر می‌رسد فیلدهای ورودی نوشتار هستند اما درواقع فقط عناصر میانای کاربر ایستا هستند و قابلیت ورودی نوشتار ندارند. فیلدهای جستجو نمونه‌ای رایج هستند. تک‌ضرب زدن روی عنصر میانای کاربر ایستا باعث انتقال به میانای کاربر جدیدی می‌شود که حاوی فیلد ورودی نوشتار کاربردی متمرکز برای ورودی است.

شکل ۳. واگذاری ورودی از عنصر میانای کاربر ایستا به فیلد ورودی نوشتار.

واگذاری ورودی قلم

از میاناهای برنامه‌سازی کاربردی واگذاری دست‌نویسی برای پشتیبانی از ورودی دست‌نویسی با قلم برای فیلدهای ورودی جای‌بان استفاده کنید (handwritingDetector و handwritingHandler را ببینید). عنصر میانای کاربر جای‌بان برای واگذاری دست‌نویسی به فیلد ورودی کاربردی پیکربندی شده است. برای مشاهده نمونه پیاده‌سازی، HandwritingDetectorSample.kt را ببینید.

حالت دست‌نویسی با قلم زمانی شروع می‌شود که فیلد ورودی کاربردی کانونی شود و InputConnection ایجاد کند.

شکل ۴. واگذاری ورودی قلم از عنصر میانای کاربر ایستا به فیلد ورودی نوشتار.

آزمایش

دست‌نویسی با قلم در دستگاه‌های دارای Android 14 و بالاتر که دستگاه ورودی قلم سازگار و ویرایشگر روش ورودی (IME) سازگار با میاناهای برنامه‌سازی کاربردی دست‌نویسی با قلم Android 14 دارند پشتیبانی می‌شود.

اگر دستگاه ورودی قلم ندارید، ورودی قلم را در هر دستگاهی با دسترسی ریشه‌ای (ازجمله شبیه‌سازها) بااستفاده از دستورات «پل اشکال‌زدایی Android»‏ (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 بتا برای آزمایش استفاده کنید.

منابع بیشتر