在android中,有一个Html.fromhtml(String source)方法,可以将比如文本
框中的字符串进行HTML格式化,支持的还是很多的。例如:
/**
* 字体颜色突出显示
*
* @param before
* 前缀字符串
* @param color
* 要突出字符串颜色值
* @param text
* 要突出的字符串
* @param after
* 后缀字符串
* @return 处理后字符串
*/
public static Spanned fromHtml(String before, String color, String text, String after) {
String[] strs = null;
if (after.contains("\n")) {
strs = null;
strs = after.split("\n");
}
StringBuffer strB = new StringBuffer();
if (strs != null && strs.length > 0) {
for (int i = 0; i < strs.length; i++) {
strB.append(strs[i]);
if (i != strs.length - 1) {
strB.append("
");
}
}
} else {
strB.append(after);
}
return Html.fromHtml(before + "" + text + "" + strB.toString());
}
需要注意的是html的换行符跟java的区别,需要提取出来单独处理,不然无法换行
Android中显示html文件要用Html.fromHtml(...)处理过的返回值,返回值可以成为setText()的参数。
只显示带文本的html可以用下面的方法处理html文件。
public static Spanned fromHtml (String source)
显示带图片的html要用下面的方法处理html文件。
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
ImageGetter 为处理html中的处理器,生成Drawable对象并返回。
创建ImageGetter 主要实现下面的方法,source为标签中src属性的值。
public class AndroidTest2Activity extends Activity {
/** Called when the activity is first created. */
TextView tv;
EditText et;
Button addPic;
String ct;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et=(EditText) this.findViewById(R.id.editText1);
tv=(TextView) this.findViewById(R.id.tv);
ct="aaaaaa";
addPic=(Button) this.findViewById(R.id.AddPic);
addPic.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
ct+="";
refreshView();
}
});
refreshView();
}
private void refreshView(){
et.setText(Html.fromHtml(ct,imageGetter,null));
tv.setText(Html.fromHtml(ct,imageGetter,null));
}
ImageGetter imageGetter = new ImageGetter()
{
@Override
public Drawable getDrawable(String source)
{
int id = Integer.parseInt(source);
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d .getIntrinsicHeight());
return d;
}
};
}