ClickableMovementMethod.java 文件源码

java
阅读 22 收藏 0 点赞 0 评论 0

项目:AndroidProjectsClient 作者:
@Override
public boolean onTouchEvent(final TextView widget, final Spannable buffer, MotionEvent event) {
    final int action = event.getAction();

    if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {

        int x = (int) event.getX();
        int y = (int) event.getY();

        x -= widget.getTotalPaddingLeft();
        y -= widget.getTotalPaddingTop();

        x += widget.getScrollX();
        y += widget.getScrollY();

        final Layout layout = widget.getLayout();
        final int line = layout.getLineForVertical(y);
        final int off = layout.getOffsetForHorizontal(line, x);

        final ClickableSpan[] clickable = buffer.getSpans(off, off, ClickableSpan.class);

        if(clickable.length != 0) {
            if(action == MotionEvent.ACTION_UP) {
                clickable[0].onClick(widget);
                triggerSpanHit(widget);
            }
            return true;
        } else {
            Selection.removeSelection(buffer);
            Touch.onTouchEvent(widget, buffer, event);
            return false;
        }
    }

    return Touch.onTouchEvent(widget, buffer, event);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号