Как создать TextView, который будет действовать как ссылка - PullRequest
4 голосов
/ 29 сентября 2010

У меня есть Textview с местоположением:

например. "Маунтин-Вью, Калифорния"

Чего я хочу добиться - создать этот текст, который будет действовать как ссылка - цвет, подчеркивание, фокусируемость и т. Д.

Эту ссылку не нужно никуда направлять - окружающий вид подключен к прослушивателю onClick, который запускает намерение карт Google.

Ответы [ 4 ]

15 голосов
/ 29 сентября 2010

Нечто подобное должно работать.

  TextView location = (TextView) findViewById(R.id.location);
  location.setMovementMethod(LinkMovementMethod.getInstance());
  Spannable spans = (Spannable) location.getText();
  ClickableSpan clickSpan = new ClickableSpan() {

     @Override
     public void onClick(View widget)
     {
        //put whatever you like here, below is an example
        AlertDialog.Builder builder = new Builder(MainActivity.this);
        builder.setTitle("Location clicked");
        AlertDialog dialog = builder.create();            
        dialog.show();
     }
  };
  spans.setSpan(clickSpan, 0, spans.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
3 голосов
/ 29 сентября 2010

В ApiDemos есть пример, который может решить вашу проблему. Проверьте com.example.android.apis.text.Link класс, это может помочь. Ниже приведена часть кода:

TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(
        Html.fromHtml(
            "<b>text3:</b>  Text with a " +
            "<a href=\"http://www.google.com\">link</a> " +
            "created in the Java source code using HTML."));
t3.setMovementMethod(LinkMovementMethod.getInstance());
0 голосов
/ 27 декабря 2014

Вы можете использовать Spannable класс с mTextView.scollTo() для создания внутренней ссылки

0 голосов
/ 26 июня 2013

tv.setMovementMethod (LinkMovementMethod.getInstance ());

, если вы не получаете обратный вызов клика

...