设置TextView中自动识别链接,并点击打开链接

如何让TextView显示链接,并点击这个链接可以打开呢?

public classMainActivity extends Activity {

     @Override
     public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);
        final String source = "http://www.baidu.com"

        TextView tv = new TextView(this);
        tv.setText(source);

        tv.setAutoLinkMask(Linkify.ALL);

       //下面这行代码重要,好多例子中都没有这行代码,
       //结果实际运行效果却是点击链接没有反应
       tv.setMovementMethod(LinkMovementMethod.getInstance());

    }

}

 

如果text内容为HTML标签,则可以使用

final String source = "http://www.baidu.com百度 "

Spanned sp = Html.fromHtml(source, new Html.ImageGetter() {
   
   @Override
   public Drawable getDrawable(String source) {
      try {

          //这个主要是为了下载图片,如果你的text 中包含外网图片时使用
           URL url = new URL(source);
           InputStream is = url.openStream();
           Drawable drawable = Drawable.createFromStream(is, "ss");     
           return drawable;
    } catch (Exception e) {
          return null;
    }
   }
  }, null);

TextView tv = new TextView(this);
 tv.setText(sp);

这样就能直接显示出像浏览器中看到的标签效果一样了。

 

2. 设置样式:

TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置

myTextView = (TextView) this.findViewById(R.id.myTextView);    
            
        //创建一个 SpannableString对象   
        SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");    
        //设置超链接   
        sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,    
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
        //设置高亮样式一   
        sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
        //设置高亮样式二   
        sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
        //设置斜体   
        sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);    
        //SpannableString对象设置给TextView   
        myTextView.setText(sp);    
        //设置TextView可点击   
        myTextView.setMovementMethod(LinkMovementMethod.getInstance());    

你可能感兴趣的:(TextView)