在文字欄位中使用觸控筆輸入內容

使用者可以透過 Jetpack androidx.compose.material3 程式庫,使用觸控筆在任何應用程式的任何 TextField 元件中書寫。

圖 1. 使用觸控筆手寫輸入內容。

如要預設啟用觸控筆輸入功能,請將程式庫依附元件新增至應用程式的 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 以上版本和 androidx.compose.foundation:foundation:1.7.0 依附元件中,所有 TextField 元件預設都會啟用觸控筆手寫功能。當系統在元件的手寫範圍內偵測到觸控筆動作事件時,就會啟動 TextField 的手寫模式。

手寫輸入範圍包括輸入欄位周圍的 40 dp 垂直邊框間距和 10 dp 水平邊框間距。

輸入欄位,周圍的矩形表示偵測觸控筆動作事件的界線。
圖 2. TextField 個元件的手寫邊界。

如果使用 KeyboardType.Password 要求輸入法編輯器,系統就不支援在 TextField 欄位中以觸控筆手寫。

輸入委派

應用程式可以顯示看似文字輸入欄位的預留位置 UI 元素,但實際上只是靜態 UI 元素,無法輸入文字。搜尋欄就是常見的例子。輕觸靜態 UI 元素會觸發轉換,前往新的 UI,其中包含可輸入文字的輸入欄位,且該欄位已設為輸入焦點。

圖 3. 將輸入內容從靜態 UI 元素委派至文字輸入欄位。

觸控筆輸入委派

使用手寫委派 API,支援預留位置輸入欄的手寫筆手寫輸入功能 (請參閱 handwritingDetectorhandwritingHandler)。預留位置 UI 元素會設定為將手寫輸入委派給功能性輸入欄。如需實作範例,請參閱 HandwritingDetectorSample.kt

當功能性輸入欄位取得焦點並建立 InputConnection 時,系統就會啟動觸控筆手寫模式。

圖 4. 將觸控筆輸入內容從靜態 UI 元素委派給文字輸入欄位。

測試

如要在 Android 14 以上版本的裝置上使用觸控筆手寫功能,必須搭配相容的觸控筆輸入裝置,以及支援 Android 14 觸控筆手寫 API 的輸入法編輯器 (IME)。

如果沒有觸控筆輸入裝置,您可以使用下列 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 版進行測試。

其他資源