2
私はEditTextとTextWatcherを持っています。ここでパターンをチェックしてClickableSpansを作成する場所を決定します。EditTextのClickableSpanをテキスト呼び出しの最後にクリックします。
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);
}
}
ここは私のカスタムスパンクラスです。私はスパンで私のテキストを終了し、それの後には文字がないと、それは、それはまだまたがるクリックとしてカウントし、onClickのが呼び出された後、私はタップしたとき
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));
}
}
問題が、あります。そのため、編集を続けるためにスパンの直後にカーソルを置くことはできません。しかし、スパンの後に空白があってもシンボルを印字すれば、スパンの後ろにカーソルを置くことができ、すべて正常に動作します。クリック可能なスパンの後にedittextのクリックを修正する方法はありますか?
私にも同様の問題がありましたが、[this](http://stackoverflow.com/a/24995777)は私を助けます。 –
[ClickableSpanの奇妙な振る舞い:空のスペースをクリックしたときに呼び出されるonClick()](https://stackoverflow.com/questions/9274331/clickablespan-strange-behavioronclick-called-when-clicking-emptyspace) – bummi