Android: добавьте «внутренние» ссылки в часть TextView, которая ссылается на действие в моем коде.

Как поясняется в заголовке, я хотел бы добавить ссылки на мой 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());
6
задан Guillaume 21 January 2012 в 00:43
поделиться