Как видно из названия, я хотел бы добавить ссылки на мой TextView
с этими двумя оговорками:
Я хочу, чтобы ссылка действовала на часть TextView
, а не на полную (что-то вроде A
якоря в HTML).
Я хочу, чтобы ссылка указывала на действие в моем коде, а не на веб-сайте. Я мог бы определить метод в своей деятельности или реализовать OnClickListener
и выполнить его при нажатии на эту конкретную ссылку.
До сих пор мне удалось превратить номера телефонов, адреса, веб-сайты и электронные письма в выделенные внешние ссылки, используя:
Linkify.addLinks(message, Linkify.ALL);
Мне бы хотелось что-то подобное для внутренних ссылок (для моего метода) с возможностью определения пользовательских.
Кроме того, использование веб-страницы с внутренней ссылкой и веб-представлением на самом деле не вариант, поскольку у меня уже есть несколько сложных макетов, и мне было бы довольно сложно изменить все приложение и концепции ...
Есть идеи?
РЕДАКТИРОВАТЬ: Кабуко дал мне очень хорошее решение, вот как я его реализовал:
final TextView descriptionTextView = (TextView) findViewById(R.id.description);
final Spannable span = Spannable.Factory.getInstance().newSpannable("the full text for the view");
span.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(StartEventActivity.this, "LINK CLICKED", Toast.LENGTH_SHORT).show();
}
}, 1, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 1 and 20 to be replaced with actual index of start and end of the desired link
descriptionTextView.setText(span);
descriptionTextView.setMovementMethod(LinkMovementMethod.getInstance());