2012-03-13 106 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