Android EditText的光标坐标(绝对位置)
如何获取 EditText 中光标的坐标?我不想在这里获取光标位置,而是获取光标的 EditText 坐标。
就我而言,当我通过 KeyEvent 向 EditText 发送数字时,光标位置 (getSelectionStart) 会发生更改,但其位置始终位于 EditText 的右侧。
我想知道光标的坐标(EditText 的右侧)。
How can I get the coordinates of the cursor in the EditText ? I am not trying to get the cursor position here but the EditText coordinates of the cursor.
In my case, when I send a number via KeyEvent to the EditText, the cursor position (getSelectionStart) is changed, but its location is always at the right of the EditText.
I want to know the coordinates of the cursor (the right of the EditText).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
答案有点晚了:),但是从 API 级别 21 (Lollipop) 开始,有一种方法可以做到这一点:
覆盖
onUpdateCursorAnchorInfo(CursorAnchorInfocursorAnchorInfo)
在您的 InputMethodService中
中并调用
获得 inputConnection 后,使用 CURSOR_UPDATE_MONITOR 标志的 inputConnection.requestCursorUpdates(intcursorUpdateMode)
。每次光标位置发生变化时都会调用
onUpdateCursorAnchorInfo
。您可以通过cursorAnchorInfo.getInsertionMarkerHorizontal()
(x) 和cursorAnchorInfo.getInsertionMarkerTop()
(y) 访问光标的右上角坐标。It's a little bit late answer :), but from API level 21 (Lollipop) there is a way to do it:
Override
onUpdateCursorAnchorInfo(CursorAnchorInfo cursorAnchorInfo)
in your InputMethodServiceand call
inputConnection.requestCursorUpdates(int cursorUpdateMode)
with CURSOR_UPDATE_MONITOR flag after you got the inputConnection.The
onUpdateCursorAnchorInfo
will be called every time the cursor's position has changed. You can access the cursor's top right coordinates bycursorAnchorInfo.getInsertionMarkerHorizontal()
(x) andcursorAnchorInfo.getInsertionMarkerTop()
(y).