Android TextView 添加超链接的两种实现方式

TerryPumpki 8年前
   <p>在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现</p>    <p>代码如下:</p>    <h2>第一种</h2>    <pre>  <code class="language-java">public class MainActivity extends Activity {   @Override   protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   LinearLayout layout = new LinearLayout(this);   LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,   LayoutParams.MATCH_PARENT);   TextView textView = new TextView(this);   String html = "有问题:\n";   html+="<a href='http://www.baidu.com'>百度一下</a>";//注意这里必须加上协议号,即http://。     //否则,系统会以为该链接是activity,而实际这个activity不存在,程序就崩溃。   CharSequence charSequence = Html.fromHtml(html);     textView.setText(charSequence);     textView.setMovementMethod(LinkMovementMethod.getInstance());   layout.addView(textView);   this.setContentView(layout,params);   }   </code></pre>    <h2>第二种</h2>    <pre>  <code class="language-java">public class MainActivity extends Activity {   @Override   protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   LinearLayout layout = new LinearLayout(this);   LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,   LayoutParams.MATCH_PARENT);   TextView textView = new TextView(this);   String html = "有问题:\n";   html+="www.baidu.com";//这里即使不加协议好HTTP;也能自动被系统识别出来。   textView.setText(html);   textView.setAutoLinkMask(Linkify.ALL);   textView.setMovementMethod(LinkMovementMethod.getInstance());   layout.addView(textView);   this.setContentView(layout,params);   }   </code></pre>    <p>总结一下就是,以html显示超链接,必须写全url。以setAutoLinkMask(Linkify.ALL)可以不用不用写全,就能自动识别出来。</p>    <p>这两种方法,都得设置一下setMovementMethod,才会跳转。</p>    <p>另外setAutoLinkMask不仅 识别超链接,包括电话号码之类的。</p>    <p> </p>    <p>来自: <a href="/misc/goto?guid=4959674676044930229" rel="nofollow">http://cnbin.github.io/blog/2016/06/18/textview-tian-jia-chao-lian-jie-liang-chong-shi-xian-fang-shi/</a></p>    <p> </p>