Моя функция для создания нескольких ссылок внутри TextView
public void makeLinks(TextView textView, String[] links, ClickableSpan[] clickableSpans) {
SpannableString spannableString = new SpannableString(textView.getText());
for (int i = 0; i < links.length; i++) {
ClickableSpan clickableSpan = clickableSpans[i];
String link = links[i];
int startIndexOfLink = textView.getText().toString().indexOf(link);
spannableString.setSpan(clickableSpan, startIndexOfLink,
startIndexOfLink + link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setHighlightColor(
Color.TRANSPARENT); // prevent TextView change background when highlight
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
}
ИСПОЛЬЗОВАНИЕ
textView.setLinkTextColor(Color.BLUE); // default link color for clickable span, we can also set it in xml by android:textColorLink=""
ClickableSpan normalLinkClickSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Normal Link", Toast.LENGTH_SHORT).show();
}
};
ClickableSpan noUnderLineClickSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "NoUnderLine Link", Toast.LENGTH_SHORT)
.show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(Color.MAGENTA); // specific color for this link
}
};
ClickableSpan highlightClickSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Highlight Link", Toast.LENGTH_SHORT)
.show();
view.invalidate(); // need put invalidate here to make text change to GREEN after clicked
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false);
if (textView.isPressed() && textView.getSelectionStart() != -1 && textView.getText()
.toString()
.substring(textView.getSelectionStart(), textView.getSelectionEnd())
.equals("Highlight Link")) {
ds.setColor(Color.RED); // need put invalidate here to make text change to RED when pressed on Highlight Link textView.invalidate();
} else {
ds.setColor(Color.GREEN);
}
// dont put invalidate here because if you put invalidate here `updateDrawState` will called forever
}
};
makeLinks(textView, new String[] {
"Normal Link", "NoUnderLine Link", "Highlight Link"
}, new ClickableSpan[] {
normalLinkClickSpan, noUnderLineClickSpan, highlightClickSpan
});
XML
NSURL путь метод звучит так, как будто он делает то, что вы хотите.