Попробуйте это,
final Context context = ... // whereever your context is
CharSequence sequence = Html.fromSource(context.getString(R.string.clickable_string));
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
UnderlineSpan[] underlines = strBuilder.getSpans(UnderlineSpan.class);
for(UnderlineSpan span : underlines) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
ClickableSpan myActivityLauncher = new ClickableSpan() {
public void onClick(View view) {
context.startActivity(getIntentForActivityToStart());
}
};
strBuilder.setSpan(myActivityLauncher, start, end, flags);
}
TextView textView = ...
textView.setText(strBuilder);
textView.setMovementMethod(LinkMovementMethod.getInstance());
По сути, вы должны прикрепить объект Span к диапазону символов, которые вы хотите кликать. Так как вы в любом случае используете HTML, вы можете использовать подчеркивающие интервалы, помещенные Html.fromSource (), в качестве маркеров для ваших собственных интервалов.
В качестве альтернативы вы также можете определить тег в строке, о которой знаете только вы.
т.е. <activity>
И предоставьте свой собственный обработчик тега для метода Html.fromSource (). Таким образом, ваш экземпляр TagHandler может сделать что-то вроде: окружить помеченный текст определенным цветом, подчеркнуть, выделить жирным шрифтом и сделать его интерактивным. Однако я бы порекомендовал подход TagHandler, если вы часто пишете этот тип кода.