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

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

根據預設,所有 TextField 元件都會啟用觸控筆手寫功能 Android 14 以上版本和 androidx.compose.foundation:foundation:1.7.0 依附元件觸控筆動作時,系統會為TextField啟動手寫模式 在元件的手寫邊界內偵測到事件。

手寫邊界包括垂直邊框間距 40 dp,以及水平 10 dp 邊框間距

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

輸入法時,TextField 欄位不支援觸控筆手寫 已透過 KeyboardType.Password 要求編輯者。

輸入委派

應用程式可以顯示預留位置 UI 元素,這些元素看起來是文字輸入欄位,但 其實只是靜態的 UI 元素,沒有文字輸入功能。搜尋 都是常見的範例輕觸靜態 UI 元素會觸發轉場效果 新版 UI,其中包含聚焦於輸入的函式文字輸入欄位。

圖 3. 從靜態 UI 元素到文字輸入欄位的輸入委派。

觸控筆輸入委派

使用手寫委派 API,支援將觸控筆輸入 預留位置輸入欄位 (請參閱 handwritingDetectorhandwritingHandler)。預留位置 UI 元素是 設定將手寫輸入功能委派給函式輸入欄位。範例說明 請參閱 HandwritingDetectorSample.kt

當功能輸入欄位取得焦點,並啟動觸控筆手寫模式 可建立 InputConnection

圖 4. 觸控筆輸入委派 (從靜態 UI 元素到文字輸入欄位)。

測試

觸控筆手寫功能適用於搭載 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 版進行測試 觸控筆。

其他資源