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

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

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

برای فعال کردن ورودی قلم به صورت پیش‌فرض، وابستگی کتابخانه را به فایل 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 به طور پیش‌فرض در اندروید 14 و بالاتر و وابستگی androidx.compose.foundation:foundation:1.7.0 فعال است. حالت دست خط زمانی برای یک TextField شروع می شود که یک رویداد حرکتی قلم در محدوده دست خط جزء تشخیص داده شود.

حاشیه های دست خط شامل 40 dp از لایه های عمودی و 10 dp از لایه های افقی در اطراف فیلد ورودی است.

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

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

تفویض اختیار ورودی

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

شکل 3. انتقال ورودی از عنصر UI ثابت به فیلد ورودی متن.

انتقال ورودی قلم

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

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

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

تست کردن

دست‌نویس قلم در دستگاه‌های Android 14 و بالاتر با یک دستگاه ورودی قلم سازگار و یک ویرایشگر روش ورودی (IME) که از APIهای دست‌نویس اندروید 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 بتا برای آزمایش استفاده کنید.

منابع اضافی