学而实习之 不亦乐乎

在 Android 中使用 Textview 显示HTML文本

2023-12-08 21:09:57

一、TextView 类中的 HTML 标签

在 TextView 类中预定义了一些类似 HTML 的标签,通过这些标签,可以使 TextView 控件显示不同的颜色、大小、字体的文字。

  • <font>:设置颜色和字体                  
  • <big>:设置大号字                
  • <small>:设置小号字
  • <i>:斜体                
  • <b>:粗体                    
  • <tt>:等宽字体(Monospace)
  • <br>:换行(行与行之间没有空行)                
  • <p>:换行(行与行之间的空行)
  • <a>:链接地址                          
  • <img>:插入图像

这些标签虽然和HTML的标签类似,但并不具备HTML标签的全部功能。如<font>标签只支持color和face两个属性。

在使用这些标签时不能将带这些标签的字符串直接赋值到TextView上,而需要使用Html.frmHtml方法将带标签的字符串转换成CharSequence对象,再赋值给TextView。

如果想在显示的文本中将URL、E-mail、电话等特殊内容高亮显示,并在单击时触发相应的动作(如单击电话会直接在拨号界面显示电话号码),可以设置<TextView>标签的android:autoLink属性,该属性可设置的属性值如下:

  • none:不匹配任何链接(默认)              
  • web:匹配Web网址                    
  • email:匹配E-mail地址
  • phone:匹配电话号码                          
  • map:匹配映射地址                    
  • all:匹配所有的链接

 

二、示例

public class Main extends Activity {  

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  

        txtFirst=(TextView)findViewById(R.id.txtFirst);  
        String html="<font color='red'>样式一</font> <br>";  
        html+="<font color='#0000FF'> <big> <i> 样式二 </i> </big> <font>";  
        html+="<font color='@"+android.R.color.white+"'> <tt> <b> <big> <u> 样式三 </u> </big> </b> </tt> </font> <br>";  
        html+="<big> <a href='http://blog.csdn.net/a_mean'>我的博客:http://blog.csdn.net/a_mean </a> </big>";  

        CharSequence charSequence=Html.fromHtml(html);  
        txtFirst.setText(charSequence);  

        //该语句在设置后必加,不然没有任何效果  
        txtFirst.setMovementMethod(LinkMovementMethod.getInstance());  
    }  
}