注释的处理触摸事件并进行文本选择功能

pull/23/head
gq 3 months ago
parent 091c18441c
commit 5301c396d8

@ -100,25 +100,44 @@ public class NoteEditText extends EditText {
// TODO Auto-generated constructor stub
}
/**
*
*
* @param event
* @return truefalse
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_DOWN: // 手指按下屏幕事件
// 1. 获取触摸点的原始坐标
int x = (int) event.getX();
int y = (int) event.getY();
x -= getTotalPaddingLeft();
y -= getTotalPaddingTop();
x += getScrollX();
y += getScrollY();
// 2. 调整坐标,去除内边距的影响
x -= getTotalPaddingLeft(); // 减去左侧内边距
y -= getTotalPaddingTop(); // 减去顶部内边距
// 3. 考虑滚动偏移量
x += getScrollX(); // 加上水平滚动距离
y += getScrollY(); // 加上垂直滚动距离
// 4. 获取文本布局对象
Layout layout = getLayout();
// 5. 根据y坐标获取行号
int line = layout.getLineForVertical(y);
// 6. 根据x坐标获取该行内的字符偏移量
int off = layout.getOffsetForHorizontal(line, x);
// 7. 设置文本选择位置
Selection.setSelection(getText(), off);
break;
}
// 调用父类方法处理其他触摸事件(如移动、抬起等)
return super.onTouchEvent(event);
}

Loading…
Cancel
Save