简体   繁体   中英

How to create TextView that will act as a link

I have a Textview with location:

eg. "Mountain View, CA"

What I want to achieve is to create this text to act like a Link - color,underline, focusability etc.

This link doesn't need to direct anywhere - surrounding view has attached onClick listener that fires google maps intent.

Something like this should work.

  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);

there is a example in ApiDemos which can solve your problem. Check out com.example.android.apis.text.Link class, it may help. Following is part of the code:

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());

tv.setMovementMethod(LinkMovementMethod.getInstance());

if you are not getting click callback

您可以使用带有mTextView.scollTo() Spannable类来创建内部链接

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM