การป้อนข้อมูลด้วยสไตลัสในช่องข้อความ

ไลบรารี Jetpack androidx.compose.material3 ช่วยให้ผู้ใช้เขียนลงในคอมโพเนนต์ TextField ใดก็ได้ใน แอปใดก็ได้โดยใช้สไตลัส

รูปที่ 1 การป้อนข้อมูลด้วยลายมือโดยใช้สไตลัส

หากต้องการเปิดใช้การป้อนข้อมูลด้วยสไตลัสโดยค่าเริ่มต้น ให้เพิ่มทรัพยากร Dependency ของไลบรารีลงในไฟล์ 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 เมื่อตรวจพบเหตุการณ์การเคลื่อนไหวของสไตลัส ภายในขอบเขตลายมือของคอมโพเนนต์

ขอบเขตของลายมือมีระยะห่างจากขอบในแนวตั้ง 40 dp และระยะห่างจากขอบในแนวนอน 10 dp รอบช่องป้อนข้อมูล

ฟิลด์อินพุตที่มีสี่เหลี่ยมล้อมรอบซึ่งระบุขอบเขตสำหรับการตรวจหาเหตุการณ์การเคลื่อนไหวของสไตลัส
รูปที่ 2 ขอบเขตของลายมือของคอมโพเนนต์ TextField

ไม่รองรับการเขียนด้วยลายมือโดยใช้สไตลัสในช่องTextField เมื่อมีการขอโปรแกรมแก้ไขวิธีการป้อนข้อมูลด้วย KeyboardType.Password

การมอบสิทธิ์อินพุต

แอปสามารถแสดงองค์ประกอบ UI ตัวยึดตำแหน่งที่ดูเหมือนช่องป้อนข้อความ แต่จริงๆ แล้วเป็นเพียงองค์ประกอบ UI แบบคงที่ที่ไม่มีความสามารถในการป้อนข้อความ ฟิลด์การค้นหาเป็นตัวอย่างที่พบบ่อย การแตะองค์ประกอบ UI แบบคงที่จะทําให้เกิดการเปลี่ยน ไปยัง UI ใหม่ที่มีช่องป้อนข้อความที่ใช้งานได้ซึ่งโฟกัสสําหรับการป้อนข้อมูล

รูปที่ 3 การมอบสิทธิ์อินพุตจากองค์ประกอบ UI แบบคงที่ไปยังช่องป้อนข้อความ

การมอบสิทธิ์อินพุตสไตลัส

ใช้ API การมอบสิทธิ์การเขียนด้วยลายมือเพื่อรองรับการป้อนข้อมูลด้วยการเขียนด้วยลายมือโดยใช้สไตลัสสำหรับ ช่องป้อนข้อมูลตัวยึดตำแหน่ง (ดู handwritingDetector และ handwritingHandler) องค์ประกอบ UI ตัวยึดตำแหน่งได้รับการกำหนดค่าให้มอบสิทธิ์การเขียนด้วยลายมือไปยังช่องป้อนข้อมูลที่ใช้งานได้ ดูตัวอย่าง การติดตั้งใช้งานได้ที่ HandwritingDetectorSample.kt

โหมดการเขียนด้วยลายมือโดยใช้สไตลัสจะเริ่มเมื่อช่องป้อนข้อมูลที่ใช้งานได้ได้รับโฟกัสและสร้าง InputConnection

รูปที่ 4 การมอบสิทธิ์การป้อนข้อมูลด้วยสไตลัสจากองค์ประกอบ UI แบบคงที่ไปยังช่องป้อนข้อความ

การทดสอบ

การเขียนด้วยลายมือโดยใช้สไตลัสรองรับในอุปกรณ์ Android 14 ขึ้นไปที่มี อุปกรณ์ป้อนข้อมูลสไตลัสที่เข้ากันได้และโปรแกรมแก้ไขวิธีการป้อนข้อมูล (IME) ที่ รองรับ Android 14 Stylus Handwriting API

หากไม่มีอุปกรณ์ป้อนข้อมูลด้วยสไตลัส ให้จำลองการป้อนข้อมูลด้วยสไตลัสในอุปกรณ์ใดก็ได้ ที่มีสิทธิ์เข้าถึงระดับรูท (รวมถึงโปรแกรมจำลอง) โดยใช้คำสั่ง 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 เวอร์ชันเบต้าเพื่อทดสอบหากคุณใช้อุปกรณ์ที่ไม่รองรับสไตลัส

แหล่งข้อมูลเพิ่มเติม