您的位置:首页 > 其它

TextView做成链接及去掉链接下划线

2017-06-06 00:17 344 查看

前言

    前几天做了一个需求,它要求把TextView做成链接,但是要改变它的颜色和这个链接不要下划线。一直陷入之前的TextView做成链接的坑中了,后来还是一个交流群的群友启发了我。不同的需求有不同的做法,如果按着一种想法,最后可能都完不成的。下列是我做的一些Demo,分享给大家。

方式一:

    这种方式是通过xml文件中设置,配置TextView的autoLink属性,这个属性有web(这个就是我需要的链接形式),email(一个电子邮件地址),none(正常的文本),phone(电话号码),all(根据我们输入的文本自动识别),map(会打开一个地图的应用)。



一般会选all,不过我建议去选择对应的属性值。这里我们选的是web,选好之后,你之前给TextView设置的颜色会变,如果想改颜色,可以通过SpannableString,但是这个链接的下划线我没用去掉。后面有去掉链接的下划线办法。

TextView textView = (TextView) findViewById(R.id.tv_web);
//这句很重要,必须加
textView.setMovementMethod(LinkMovementMethod.getInstance());


方式二:

    这种方法我觉得比较笨,但是效果可以达到,既可以删除下划线,又可以更改链接的颜色,好了,废话不多说,直接上代码:

[b]xml代码:[/b]

<TextView
android:id="@+id/tv_web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="https://www.baidu.com/"
android:textColor="#0f0"
android:textSize="30sp"
android:clickable="true"
/>


[b]MainActivity代码:[/b]

TextView textView = (TextView) findViewById(R.id.tv_web);

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new      Intent(MainActivity.this,WebActivity.class);
startActivity(intent);
finish();
}
});


第二个xml布局文件中就是一个WebView,填充父窗体

第二个Activity代码:

WebView webView = (WebView) findViewById(R.id.web);

WebSettings webSettings = webView.getSettings();
//设置WebView属性,能够执行Javascript脚本
webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//设置支持缩放
webSettings.setBuiltInZoomControls(true);
//加载需要显示的网页
webView.loadUrl("https://www.baidu.com/");


这种方式就是点击TextView跳转到另一个Activity,让另一个Activity中的WebView加载Url

注意:这种方式需要在清单文件声明一下另一个Activity

方式三:

    通过和Html结合

textView.setText(Html.fromHtml("<a href='http://www.baidu.com'>百度</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());


这种方式连接的下滑线也没有去除,颜色设置之后也没有作用,只是单纯的打开链接。

方式四:

    这种方式是在方式二的启发下,这种方式完美的解决了下划线和颜色问题,直接上代码:

TextView textView = (TextView) findViewById(R.id.tv_web);

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});


你使用这种方式,可以随意的设置链接颜色,而且没有下划线。

注意:使用以上的方式不要忘记在清单中添加权限

<uses-permission android:name="android.permission.INTERNET"/>


总结:

以上的这几种方式,不一定是最优的,但是解决了我的需求问题,如果哪里有错误的地方还请各位老铁们及时指出。经过一系列的折腾,同样的一种需求,可能有多种解决办法,经常动脑思考,多看看不同的技术文章会让你的脑洞大开。还是那句话,换个角度看问题,世界都变成不一样了呢!(^__^) 嘻嘻……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  textview 链接
相关文章推荐