Ответ 1
Linkify
применяется к методу motionMethod для textView LinkMovementMethod
. Этот метод движения считал, что он реализует вертикальный метод прокрутки, который переопределяет любой другой метод прокрутки, который имеет родитель. Хотя touchEvent
может быть передано родительскому объекту, конкретному родительскому элементу ScrollView
понадобилась вся последовательность ACTION_DOWN
, ACTION_MOVE
, ACTION_UP
для выполнения (определение развертки).
Итак, решение моей проблемы после Linkify для удаления метода прокрутки textView и обработки действия обнаружения ссылки LinkMovementMethod
в onTouchEvent
текстового файла.
@override
public boolean onTouchEvent(MotionEvent event) {
TextView widget = (TextView) this;
Object text = widget.getText();
if (text instanceof Spanned) {
Spannable buffer = (Spannable) text;
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();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] link = buffer.getSpans(off, off,
ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
link[0].onClick(widget);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
}
}
}
return false;
}
Таким образом, у меня есть обнаружение Link_Click (выполняется только с пользователем, касающимся ссылки, а не всего текста), и у меня нет всего метода LinkMovementMethod.