@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
int x = (int) event.getX();
int y = (int) event.getY();
x -= getTotalPaddingLeft();
y -= getTotalPaddingTop();
x += getScrollX();
y += getScrollY();
Layout layout = getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
Selection.setSelection(getText(), off); //将光标定位到点击的位置
break;
}
return super.onTouchEvent(event);
}
上面这段代码研究了两天,终于知道是干什么的了,就是当点击EditText时,自动将光标定位到点击的位置,虽然知道代码的作用了,但是原理还是看不懂:
getX()、getY()、getTotalPaddingLeft()、getTotalPaddingTop()、getScrollX()、getScrollY()在API帮助里面说得不清不楚,不知道最终计算出的x和y是什么东西,求高手解答???