Android 14 (API 級別 34) 以上版本可讓使用者將輸入內容寫入任何文字輸入內容
] 欄位顯示內容Android 文字輸入欄位,包括
EditText
元件和
WebView
文字小工具、支援
預設以觸控筆輸入。
不過,如果您的應用程式需要自訂文字輸入欄位 (請參閱自訂文字 編輯者) 或 採用複雜的版面配置,而且文字輸入欄位疊加在繪圖介面上,而 就必須自訂應用程式
EditText
根據預設,Android 14 的所有 EditText
欄位都會啟用觸控筆手寫功能
以及更高版本觸控筆動作時,EditText
會啟動手寫模式
在檢視畫面的手寫範圍內偵測到事件。
手寫邊界包括垂直邊框間距 40 dp,以及水平 10 dp
也就是檢視區塊周圍的邊框間距使用
setHandwritingBoundsOffsets()
。
停用手寫輸入功能
setAutoHandwritingEnabled(false)
。
![周圍矩形的輸入欄位,代表偵測觸控筆動作事件的邊界。](https://developer.android.google.cn/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=19&hl=zh-tw)
EditText
欄位的手寫界限。
輸入委派
應用程式可以顯示預留位置 UI 元素,這些元素看起來是文字輸入欄位,但 其實只是靜態的 UI 元素,沒有文字輸入功能。搜尋 都是常見的範例輕觸靜態 UI 元素會觸發轉場效果 新版 UI,其中包含聚焦於輸入的函式文字輸入欄位。
觸控筆輸入委派
使用手寫委派 API,支援將觸控筆輸入
預留位置輸入欄位 (請參閱
setHandwritingDelegatorCallback()
敬上
和
setIsHandwritingDelegate()
)。
將預留位置 UI 元素設為將手寫內容委派給函式
輸入欄位,例如:
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); }
如果在預留位置文字輸入欄位檢視畫面上套用觸控筆動作,會叫用回呼。
回呼會觸發 UI 轉換,以顯示並聚焦功能輸入
] 欄位。回呼實作通常與實作方式相同
設定預留位置元素功能輸入欄位
可建立
InputConnection
、
啟動觸控筆手寫模式。
質感設計
com.google.android.material.search
敬上
程式庫提供
SearchBar
和
SearchView
門課程
以便實作預留位置 UI 模式。
預留位置和功能性搜尋檢視會與
setUpWithSearchBar()
。
手寫委派功能是在 Material 程式庫中設定,沒有 所需的開發作業。
與繪圖介面重疊
如果應用程式有繪圖介面,且文字欄位重疊在介面上,
可能要停用觸控筆手寫功能,才能讓使用者繪圖。詳情請見
setAutoHandwritingEnabled()
。
測試
觸控筆手寫功能適用於搭載 Android 14 以上版本的裝置,且支援 相容的觸控筆輸入裝置和輸入法 編輯者 (IME) 支援 Android 14 觸控筆手寫 API。
如果你沒有觸控筆輸入裝置,請在任何裝置上模擬觸控筆輸入模式 具備 Root 存取權 (包括模擬器) 使用下列 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 Beta 版進行測試 觸控筆。