Thư viện Jetpack androidx.compose.material3
cho phép người dùng viết vào thành phần TextField
bất kỳ trong mọi ứng dụng bằng bút cảm ứng.
Để bật tính năng nhập bằng bút cảm ứng theo mặc định, hãy thêm phần phụ thuộc thư viện vào tệp build.gradle
của ứng dụng:
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
Theo mặc định, tính năng viết tay bằng bút cảm ứng được bật cho tất cả thành phần TextField
trên Android 14 trở lên và phần phụ thuộc androidx.compose.foundation:foundation:1.7.0
. Chế độ viết tay được bắt đầu cho TextField
khi phát hiện thấy một sự kiện chuyển động của bút cảm ứng trong ranh giới chữ viết tay của thành phần.
Giới hạn của chữ viết tay bao gồm khoảng đệm dọc 40 dp và khoảng đệm ngang 10 dp xung quanh trường nhập dữ liệu.
![Trường nhập dữ liệu có hình chữ nhật bao quanh cho biết các ranh giới giúp phát hiện sự kiện chuyển động của bút cảm ứng.](https://developer.android.com/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=5&hl=vi)
TextField
thành phần.
Không hỗ trợ viết tay bằng bút cảm ứng cho các trường TextField
khi yêu cầu trình chỉnh sửa phương thức nhập bằng KeyboardType.Password
.
Uỷ quyền nhập dữ liệu
Ứng dụng có thể cho thấy các phần tử giữ chỗ trên giao diện người dùng trông giống như các trường nhập văn bản nhưng thực ra chỉ là các phần tử tĩnh trên giao diện người dùng không có khả năng nhập văn bản. Trường tìm kiếm là một ví dụ phổ biến. Thao tác nhấn vào thành phần tĩnh trên giao diện người dùng sẽ kích hoạt quá trình chuyển đổi sang giao diện người dùng mới có chứa trường nhập dữ liệu văn bản đang hoạt động tập trung để nhập thông tin.
Uỷ quyền nhập bằng bút cảm ứng
Sử dụng các API uỷ quyền cho chữ viết tay để hỗ trợ nhập bằng chữ viết tay bằng bút cảm ứng cho các trường nhập dữ liệu giữ chỗ (xem handwritingDetector
và handwritingHandler
). Thành phần phần giữ chỗ trên giao diện người dùng được định cấu hình để uỷ quyền chữ viết tay cho một trường nhập dữ liệu chức năng. Hãy xem HandwritingDetectorSample.kt
để tham khảo ví dụ về cách triển khai.
Chế độ viết tay bằng bút cảm ứng bắt đầu khi trường nhập chức năng được lấy tiêu điểm và tạo InputConnection
.
Kiểm thử
Tính năng viết tay bằng bút cảm ứng được hỗ trợ trên các thiết bị chạy Android 14 trở lên với thiết bị nhập bằng bút cảm ứng tương thích và trình chỉnh sửa phương thức nhập (IME) hỗ trợ API viết tay bằng bút cảm ứng Android 14.
Nếu bạn không có thiết bị nhập bằng bút cảm ứng, hãy mô phỏng phương thức nhập bằng bút cảm ứng trên mọi thiết bị có quyền truy cập thư mục gốc (bao gồm cả trình mô phỏng) bằng cách sử dụng các lệnh Cầu gỡ lỗi Android (adb) sau:
// 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
Hãy dùng phiên bản beta của Gboard để kiểm thử nếu bạn đang sử dụng một thiết bị không hỗ trợ bút cảm ứng.
Tài nguyên khác
- Material Design – Trường văn bản
- Xử lý hoạt động đầu vào của người dùng