Android 14 (API cấp 34) trở lên cho phép người dùng ghi vào mọi dữ liệu nhập văn bản
trong bất kỳ ứng dụng nào bằng bút cảm ứng. Các trường nhập văn bản Android, bao gồm
EditText
và
Tiện ích văn bản WebView
, hỗ trợ
nhập bằng bút cảm ứng theo mặc định.
Tuy nhiên, nếu ứng dụng của bạn yêu cầu các trường nhập văn bản tuỳ chỉnh (xem bài viết Văn bản tuỳ chỉnh người chỉnh sửa) hoặc có bố cục phức tạp với các trường nhập văn bản phủ lên một bề mặt vẽ, bạn sẽ cần tuỳ chỉnh ứng dụng của mình.
EditText
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ả các trường EditText
trên Android 14
và cao hơn. Chế độ viết tay đã được kích hoạt cho EditText
khi bút cảm ứng chuyển động
sự kiện được phát hiện trong ranh giới chữ viết tay của khung hiển thị.
Giới hạn viết tay bao gồm khoảng đệm dọc 40 dp và chiều ngang 10 dp
khoảng đệm xung quanh khung hiển thị. Điều chỉnh ranh giới chữ viết tay bằng
setHandwritingBoundsOffsets()
.
Tắt tính năng viết tay bằng
setAutoHandwritingEnabled(false)
.
![Trường nhập dữ liệu có hình chữ nhật xung quanh cho biết giới hạn phát hiện các sự kiện chuyển động của bút cảm ứng.](https://developer.android.google.cn/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=19&hl=vi)
EditText
.
Uỷ quyền dữ liệu đầu vào
Ứ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 dữ liệu văn bản thực ra chỉ là các thành phần tĩnh trên giao diện người dùng không có tính năng nhập văn bản. Tìm kiếm là một ví dụ phổ biến. Thao tác nhấn vào phần tử tĩnh trên giao diện người dùng sẽ kích hoạt hiệu ứng chuyển đổi sang giao diện người dùng mới có chứa trường nhập dữ liệu chức năng làm tiêu điểm cho nhập dữ liệu.
Uỷ quyền nhập bằng bút cảm ứng
Sử dụng API uỷ quyền chữ viết tay để hỗ trợ tính năng nhập bằng chữ viết tay bằng bút cảm ứng cho
trường nhập phần giữ chỗ (xem
setHandwritingDelegatorCallback()
và
setIsHandwritingDelegate()
).
Phần tử 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 chức năng
trường nhập dữ liệu, ví dụ:
Kotlin
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback { showAndFocusDelegateInputField() } delegateInputField.setIsHandwritingDelegate(true) }
Java
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate); delegateInputField.setIsHandwritingDelegate(true); }
Di chuyển bút cảm ứng qua chế độ xem trường nhập văn bản của phần giữ chỗ sẽ gọi lệnh gọi lại.
Lệnh gọi lại kích hoạt hiệu ứng chuyển đổi giao diện người dùng để hiển thị và tập trung vào phương thức nhập chức năng
. Việc triển khai lệnh gọi lại thường giống như triển khai
cho trình nghe lượt nhấp trên phần tử giữ chỗ. Khi trường nhập dữ liệu chức năng
tạo ra một
InputConnection
!
chế độ viết tay bằng bút cảm ứng sẽ bắt đầu.
Material Design
Chiến lược phát hành đĩa đơn
com.google.android.material.search
thư viện cung cấp
SearchBar
và
SearchView
lớp học
hỗ trợ việc triển khai mẫu giao diện người dùng phần giữ chỗ.
Trình giữ chỗ và chế độ xem tìm kiếm chức năng được liên kết với
setUpWithSearchBar()
.
Tính năng uỷ quyền viết tay được định cấu hình trong thư viện Material mà không cần thêm cần thiết trong ứng dụng của bạn.
Chồng chéo với các bề mặt vẽ
Nếu ứng dụng của bạn có giao diện vẽ với trường văn bản phủ lên trên đó, bạn
có thể cần phải tắt tính năng viết tay bằng bút cảm ứng để cho phép người dùng vẽ. Xem
setAutoHandwritingEnabled()
.
Thử nghiệm
Viết tay bằng bút cảm ứng được hỗ trợ trên các thiết bị Android 14 trở lên có thiết bị đầu vào tương thích bằng bút cảm ứng và phương thức nhập trình chỉnh sửa (IME) mà hỗ trợ API viết tay bằng bút cảm ứng cho Android 14.
Nếu bạn không có thiết bị đầu vào 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 bất kỳ thiết bị nào 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ầu gỡ lỗi Android sau đây (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
Sử dụng Gboard beta để thử nghiệm nếu bạn đang sử dụng 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
- Trình chỉnh sửa văn bản tuỳ chỉnh