有时需要在TextView中显示带有html标签的字串,并希望自动将html标签转换为可以点击的链接
可以通过如下的方式处理:
CharSequence richText = Html.fromHtml(message);
mText.setMovementMethod(LinkMovementMethod.getInstance());
另外字符串如果是通过encode过的话,实际的显示应该是乱码,类似于下文中带有%20这种方式的字符串,所以可以重新decode一下即可
代码如下:
public class MainActivity extends Activity { private TextView mText; private String message; // private String beginStr = "Always%20bear%20in%20mind%20that%20your%20own%20resolution%20to%20success%20is%20more%20important%20than%20anything.\n" + // "Please%20%3Ca%20href%3D%22http%3A%2F%2Fwww.baidu.com%22%3EContact%20Us%3C%2Fa%3E."; private String beginStr = "花郎的博客 <a href='http://www.baidu.com'>戳我</a>"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mText = (TextView)findViewById(R.id.hello); try { /** * 上面的有%20字符串是故意设置的,这是encode过的字符串 * 所以需要decode才会显示正确的内容 */ message = URLDecoder.decode(beginStr, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } CharSequence richText = Html.fromHtml(message); /**如果使超链接可点击,需要设置如下 * 如果想同时让内容可滚动和超链接可点击,只要设置LinkMovementMethod即可。 * 因为其继承了ScrollingMovementMethod。关于ScrollingMovementMethod说明,可查看android实现TextView垂直或水平滚动 */ mText.setMovementMethod(LinkMovementMethod.getInstance()); mText.setText(richText); } }