2012-03-13 16 views
5

私はAndroidのソフトキーボードで作業していて、キーボードが現在のカーソル位置を取得する方法があるのだろうかと疑問に思っていましたか?私は現在、次のコードを使用しています: - ギャラクシーネクサス上で実行されているので、これは可能性さえなりカーソル位置を取得Androidキーボード

connection.getTextBeforeCursor(Integer.MAX_VALUE, 0).length() 

はしかし、これは(たとえテキストの少量のために、それは50ミリ秒かかることが非常に遅いですローエンドの電話機では遅くなります)。私はDroid Incredibleでもテストしましたが、ラグはさらに深刻です。

関数onUpdateSelectionでは、新しいカーソル位置が与えられます。ただし、この関数は必ずしも呼び出されるとは限らず、将来の使用のためにその関数が提供する値を格納することは信頼性がありません。

カーソル位置を設定し、選択したテキストを取得できます(ただし、選択したテキストの位置は取得できません)。カーソル位置を取得する機能はありませんか?

ありがとうございました!

答えて

4

これは古い質問ですが、最近同じ問題が発生しました。カーソル位置を取得するには:

InputConnection ic = getCurrentInputConnection(); 
ExtractedText et = ic.getExtractedText(new ExtractedTextRequest(), 0); 
int selectionStart = et.selectionStart; 
int selectionEnd = et.selectionEnd; 
+0

これは選択したテキストを処理しているようです。質問は選択肢のないテキスト内のちょうど普通のカーソルのようです。この場合、このコードは機能しますか? –

+0

はい、その場合、selectionStartとselectionEndは等しくなります。 –

関連する問題