借助 Jetpack androidx.compose.material3
库,用户可以使用触控笔向任何应用中的任何 TextField
组件写入数据。
如需默认启用触控笔输入,请将库依赖项添加到应用的 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
在 Android 14 及更高版本中,系统默认会为所有 TextField
组件启用触控笔手写功能,并且会启用 androidx.compose.foundation:foundation:1.7.0
依赖项。在组件的手写边界内检测到触控笔动作事件时,系统会针对 TextField
启动手写模式。
手写边界包括输入字段周围的 40 dp 的垂直内边距和 10 dp 的水平内边距。
![输入字段,周围的矩形指示检测触控笔动作事件的边界。](https://developer.android.google.cn/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=5&hl=sr)
TextField
组件的手写边界。
当使用 KeyboardType.Password
请求输入法编辑器时,TextField
字段不支持触控笔手写。
输入委托
应用可以显示看起来像文本输入字段,但实际上只是没有文本输入功能的静态界面元素的占位符界面元素。搜索字段就是一个常见的示例。点按静态界面元素会触发过渡到新界面,该界面包含用于输入焦点的功能文本输入字段。
触控笔输入委托
使用手写委托 API 支持在占位符输入字段中使用触控笔手写输入(请参阅 handwritingDetector
和 handwritingHandler
)。占位符界面元素可将手写内容委托给可正常使用的输入字段。如需查看示例实现,请参阅 HandwritingDetectorSample.kt
。
当功能输入字段获得焦点并创建 InputConnection
时,触控笔手写模式便会启动。
测试
搭载 Android 14 及更高版本的设备支持触控笔手写,设备具有兼容的触控笔输入设备和支持 Android 14 触控笔手写 API 的输入法 (IME)。
如果您没有触控笔输入设备,请使用以下 Android 调试桥 (adb) 命令在具有 root 访问权限的任何设备(包括模拟器)上模拟触控笔输入:
// 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 Beta 版进行测试。