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

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"
    }
}

ดึงดูด

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

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