У меня есть EditText и TextWatcher, в котором я проверяю шаблоны, чтобы определить, где создавать ClickableSpans.ClickableSpan в EditText до конца текстовых вызовов click() в конец строки
private void checkSpans(){
Matcher matcher = Pattern.compile("(^|[ \\t\\n])#\\w+").matcher(text);
while (matcher.find()) {
BlueClickableSpan[] spans = getText().getSpans(matcher.start(), matcher.end(), BlueClickableSpan.class);
for (BlueClickableSpan span : spans) {
text.removeSpan(span);
}
text.setSpan(new BlueClickableSpan(),
matcher.start(),
matcher.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
Это мой собственный класс Span.
private class BlueClickableSpan extends ClickableSpan {
@Override
public void onClick(View view) {
Spanned s = getText();
int start = s.getSpanStart(this);
int end = s.getSpanEnd(this);
String clickedString = s.subSequence(start, end).toString().trim();
if (onSpanClick != null)
onSpanClick.onClick(clickedString);
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ContextCompat.getColor(IdeaFlowApp.getAppContext(), R.color.main_blue));
}
}
Проблема заключается в том, когда я заканчиваю свой текст с пролетом и нет знаков после него, и я нажимаю после него, он по-прежнему считается одним щелчком, чтобы охватывать и OnClick называется. Из-за этого я не могу поместить курсор сразу после прокрутки, чтобы продолжить редактирование. Но если я напечатаю любой символ, даже пробел после пролета, я могу легко поместить курсор после пролета, и все будет хорошо. Есть ли способ исправить клики в edittext после кликабельного диапазона, если нет символов за пределами?
У меня была схожая проблема, и это [это] (http://stackoverflow.com/a/24995777) помогает мне. –
Возможный дубликат [ClickwiseSpan странное поведение: onClick() вызывается при нажатии пустого пространства] (https://stackoverflow.com/questions/9274331/clickablespan-strange-behavioronclick-called-when-clicking-empty-space) – bummi