HTML类可解析的标签
在手机上显示从网络端获取的数据有两种方式,一种是WebView,另一种是TextView, WebView 大家都知道,功能强大但不灵活,下面主要说下 TextView。
通过查看android.text.Html的源码,发现Textview可以解析以下html标签:
- <a href="...">创建超文本链接
- <b>黑体字
- <big>字体加大
- <blockquote>从两边缩进文本
- <br>换行 插入换行符
- <cite>引用,通常是斜体
- <dfn>述语定义
- <div align="...">用来排版大块HTML段落,也用于格式化表
- <em>强调文本(通常是斜体加黑体)
- <font size="..." color="..." face="...">设置字体大小从1到7,颜色使用名字或RGB的十六进制值
- <h1>至<h6>标题
- <i>斜体字
- <img src="...">图片
- <p>创建一个段落
- <small>字体缩小
- <strike>加删除线
- <strong>加重文本(通常是斜体加黑体)
- <sub>下标字
- <sup>上标字
- <tt>打字机风格的字体
- <u>下划线
代码
public class MainActivity extends Activity {
private TextView tv2;
private TextView tv3;
private TextView tv4;
private TextView tv5;
private TextView tv6;
@Override
protected void
super.onCreate(savedInstanceState);
activity_main);
tv2 = (TextView) findViewById(R.id.tv2);
tv3 = (TextView) findViewById(R.id.tv3);
tv4 = (TextView) findViewById(R.id.tv4);
tv5 = (TextView) findViewById(R.id.tv5);
tv6 = (TextView) findViewById(R.id.tv6);
setHTML();
setHTML2();
setHTML3();
setHTML4();
}
private void
//若是仅在布局文件中引用,可以把HTML格式字符串写到strings文件中,但要注意,很多很多格式都是不支持的!
//getString(方法)得到的是没有任何格式的字符串,所以若是在代码中设置,就不能把HTML格式字符串写到strings文件中
tv2.setText(Html.fromHtml(getString(R.string.html_str)));
//建议直接在代码中定义并使用。注意双引号要加转义字符
"<html>|<i> 引用 </i>|<font color=\"#aabb00\"> values/ </font>|<font color=\"RED\"> strings </font>|<strong> 中的 </strong>|<em> html </em>|<strike> 格式的 </strike>|<u> 字符串 </u>|<h3> 但是 </h3>|<big> 很多 </big>|<small> 格式 </small>|<b> 都 </b>| <sub> 不 </sub>|<tt> 支持 </tt>|</html>";
tv3.setText(Html.fromHtml(html));
"<a href=\"http://www.baidu.com\">代码中支持超链接</a> <font color=\"#aabb00\">支持设置颜色</font>";
tv4.setMovementMethod(LinkMovementMethod.getInstance());
tv4.setText(Html.fromHtml(html2));
}
//显示资源图片
private void
new
public
int rId = Integer.parseInt(source);
Drawable drawable = getResources().getDrawable(rId);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return
}
};
"drawable中的图片:<img src=\"" + R.drawable.ic_launcher + "\" />";
tv5.setText(Html.fromHtml(sText, imageGetter, null));
}
//显示本地图片
private void
new
public
createFromPath(source);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return
}
};
"本地图片:<img src=\"/mnt/sdcard/temp/1.jpg\" />";
try
tv6.setText(Html.fromHtml(sText, imageGetter, null));
catch
}
}
//显示网路图片
private void
new
public
null;
URL url;
try
new
createFromStream(url.openStream(), "");
catch
return null;
}
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return
}
};
//tv7.setText(Html.fromHtml(sText1, imageGetter, null));
}
}
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/html_str"
android:textColor="#00f" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#f0f" />
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0ff" />
<TextView
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0f0" />
<TextView
android:id="@+id/tv5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#00f" />
<TextView
android:id="@+id/tv6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#880" />
</LinearLayout>
<string name="html_str"><html>|<i> 引用 </i>|<font color="#aabb00"> values/ </font>|<font color="RED"> strings </font>|<strong> 中的 </strong>|<em> html </em>|<strike> 格式的 </strike>|<u> 字符串 </u>|<h3> 但是 </h3>|<big> 很多 </big>|<small> 格式 </small>|<b> 都 </b>| <sub> 不 </sub>|<tt> 支持 </tt>|</html></string>