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 以降と androidx.compose.foundation:foundation:1.7.0 依存関係では、すべての TextField コンポーネントでスタイラスによる手書き入力がデフォルトで有効になっています。TextField の手書きモードは、コンポーネントの手書き境界内でスタイラスのモーション イベントが検出されたときに開始されます。
手書き入力の境界には、入力フィールドの周囲に 40 dp の垂直パディングと 10 dp の水平パディングが含まれます。
TextField コンポーネントの手書き入力の境界。入力メソッド エディタが KeyboardType.Password でリクエストされた場合、TextField フィールドのタッチペン手書き入力はサポートされません。
入力の委任
アプリは、テキスト入力フィールドのように見えるプレースホルダー UI 要素を表示できますが、実際にはテキスト入力機能のない静的な UI 要素です。検索フィールドは一般的な例です。静的な UI 要素をタップすると、入力用にフォーカスされた機能的なテキスト入力フィールドを含む新しい UI に切り替わります。
タッチペン入力の委任
手書き委任 API を使用して、プレースホルダ入力フィールドのスタイラス手書き入力をサポートします(handwritingDetector と handwritingHandler を参照)。プレースホルダ UI 要素は、手書きを機能的な入力フィールドに委任するように構成されています。実装例については、HandwritingDetectorSample.kt をご覧ください。
スタイラス手書きモードは、機能入力フィールドがフォーカスを取得し、InputConnection を作成したときに開始します。
テスト
タッチペンによる手書き入力は、互換性のあるタッチペン入力デバイスと、Android 14 のタッチペン手書き入力 API をサポートする入力方式エディタ(IME)を備えた Android 14 以降のデバイスでサポートされています。
スタイラス入力デバイスがない場合は、次の 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 ベータ版を使用します。
参考情報
- マテリアル デザイン - テキスト フィールド
- ユーザー入力を処理する