getSelectionStart() doesn't work in android, is always 0
程序员文章站
2024-03-17 11:24:10
...
当用户点击EditText时,调用
int startIndex = et.getSelectionStart();
获取的值总是0 ,没法准确定位光标位置,因为getSelectionStart与用户Touch或click无关,与用户选择文本相关,默认情况下,当用户执行长时间单击时,光标将出现文本中,并允许用户高亮显示的文本选择。高亮显示的文本指的是选择,而不一定是用户上次触摸的地方。
解决:
自定义MyEditText继承EditText,重写onTouchEvent方法
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Pos = getOffsetForPosition(event.getX(), event.getY());
break;
default:
break;
}
return super.onTouchEvent(event);
}
这个Pos就是光标的位置。