テキスト フィールドのタッチペン入力

Android 14(API レベル 34)以降では、ユーザーが任意のテキスト入力に書き込める 通知を受け取ることができます。以下を含む Android のテキスト入力フィールド EditText コンポーネントと WebView テキスト ウィジェット、サポート タッチペン入力がデフォルトになりました。

ただし、アプリがカスタム テキスト入力フィールドを必要とする場合は(カスタム テキスト エディタ)または 描画サーフェスの上にテキスト入力フィールドが重なる複雑なレイアウトの場合は、 アプリをカスタマイズする必要があります

図 1. タッチペンによる手書き入力。

EditText

Android 14 では、すべての EditText フィールドでタッチペン手書き入力がデフォルトで有効 以上です。タッチペンを動かすと、EditText の手書き入力モードが開始されます。 イベントが、ビューの手書き境界内で検出されます。

手書き入力の境界には、垂直方向のパディング 40 dp、水平方向のパディング 10 dp が含まれます。 パディングされます。手書き入力の境界を調整する setHandwritingBoundsOffsets()。 手書き入力を無効にする setAutoHandwritingEnabled(false)

タッチペンのモーション イベントの検出範囲を示す周囲四角形を入力フィールド。
図 2. EditText フィールドの手書き入力境界。

入力の委任

アプリは、テキスト入力フィールドのように見えるプレースホルダ UI 要素を表示できますが、 実際には、テキスト入力機能のない静的な UI 要素です。検索 一般的な例です。静的な UI 要素をタップすると遷移がトリガーされる 入力用にフォーカスされた機能的テキスト入力フィールドを含む新しい UI です。

図 3. 静的 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 タッチペン手書き入力モードが開始されます。

図 4. 静的 UI 要素からテキスト入力フィールドへのタッチペン入力の委任。

マテリアル デザイン

com.google.android.material.search ライブラリは、 SearchBarSearchView クラス プレースホルダ UI パターンを簡単に実装できます。

プレースホルダ ビューと機能検索ビューは、 setUpWithSearchBar()

手書き入力の委任はマテリアル ライブラリで設定でき、追加の操作は必要ありません 開発する必要があります

描画サーフェスと重なっている

アプリに描画サーフェスがあり、そのサーフェスにテキスト フィールドが重なっている場合は、 ユーザーが描画できるように、タッチペンの手書き入力を無効にしなければならない場合があります。詳しくは、 setAutoHandwritingEnabled()

テスト

タッチペンでの手書き入力は、以下を搭載した Android 14 以降のデバイスでサポートされています。 対応するタッチペン入力デバイスと入力方法 エディタ(IME)が起動され、 Android 14 のタッチペン手書き API をサポートしています。

タッチペン入力デバイスがない場合は、任意のデバイスでタッチペン入力をシミュレートします 次の Android Debug Bridge を使用して、root アクセス権(エミュレータを含む)でアクセスできる (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 のベータ版を使用してください タッチペン。

参考情報