0

私のソフトキーボードでは、以下のように削除するためのイベントキーを完全にキャプチャできます

public void onKey(int primaryCode, int[] keyCodes) {
    if (primaryCode == Keyboard.KEYCODE_DELETE) {
        int ccLength = composingContent.length();
        if (ccLength > 1) {
            composingContent.delete(ccLength - 1, ccLength);
            getCurrentInputConnection().setComposingText(composingContent, ccLength - 1);
        }
    }
}

問題は、新しいcomposingContentが設定されると、古いテキストの末尾に追加されることです。古いコンテンツはクリアされません。私も使った

getCurrentInputConnection().commitText(composingContent, ccLength - 1);

ただし、これは以前に設定された構成テキストもクリアしません

4

1 に答える 1

0

私は方法を発見しました。このアプローチは私の問題を解決しましたが、もっと良い方法があるはずです。誰かが興味を持っている場合に備えて、これを投稿します。私がしたことは、setComposingText を呼び出す前に、まず setSelection を呼び出しました。これを行うことで、入力内のすべてのテキストを選択し、構成テキストを設定しています。

InputConnection conn = getCurrentInputConnection();
    if (conn != null) {
        int ccLength = composingContent.length();
        if (ccLength > 1) {
            composingContent.delete(ccLength - 1, ccLength);
            conn.setSelection(0, ccLength);
            conn.setComposingText(composingContent, 1);
        } 
}
于 2013-09-24T15:00:52.640 に答える