2012-03-13 103 views
5

我正在Android軟鍵盤上工作,並想知道,有沒有辦法讓鍵盤獲得當前的光標位置?我目前使用下面的代碼:獲取光標位置Android鍵盤

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

然而,這是非常緩慢(甚至文本少量,它可能需要長達50ms的 - 在Galaxy Nexus的運行,因此這很可能是連對於低端手機來說速度較慢)。我也在Droid Incredible上測試過它,而且滯後更加嚴重。

在函數onUpdateSelection中,給出了新的光標位置。但是,這個函數並不總是被調用,因此存儲它提供的值供將來使用並不可靠。

由於您可以設置光標位置並獲取選定的文本(但不是所選文本的位置),是否應該沒有函數來獲取光標位置?

感謝您的幫助!

回答

4

這是一個較老的問題,但我最近遇到了同樣的問題。獲取光標位置:

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

這看起來像是在選定的文本上工作。這些問題似乎只是關於沒有選擇的文本中的正常光標。這個代碼在這種情況下工作嗎? – 2013-08-14 17:54:50

+0

是的,在這種情況下,selectionStart和selectionEnd是相等的。 – 2013-08-14 21:02:50