Android TextView 添加下划线的几种方式

总结起来大概有5种做法: 

1. 将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化)

2. 当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如果是所有的类型都出来就是android:autoLink="all",当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 

3. 用Html类的fromHtml()方法格式化要放到TextView里的文字 ,与第1种一样,只是是用代码动态设置

4. 设置TextView的Paint属性:tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线

5. 用Spannable或实现它的类,如SpannableString来格式部分字符串。

如果是在资源文件里:

1、字符串资源中设置下划线属性

<resources>
    <string name="hello"><u>phone:0123456</u></string>
    <string name="app_name">MyLink</string>
</resources>
直接让TextView引用字符串资源的name即可。2、TextView设置autoLink属性
<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
     android:id="@+id/text1"
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:autoLink="all"  
     android:text="@string/link_text_auto"  />  
如果是代码里:1、使用Html.fromHtml()
TextView textView = (TextView)findViewById(R.id.tv_test); 
textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));
2、使用TextView的Paint的属性
tvTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
tvTest.getPaint().setAntiAlias(true);//抗锯齿
3、使用SpannableString类
SpannableString content = new SpannableString(str);
content.setSpan(new UnderLineSpan, 0, str.length(), 0);
代码里面自定义超链接样式:
TextView tv=new TextView(this);
tv.setText(Html.fromHtml("<a href=\"http://blog.csdn.net/CAIYUNFREEDOM\">自定义的超链接样式</a>"));
// 在单击链接时凡是有要执行的动作,都必须设置MovementMethod对象
tv.setMovementMethod(LinkMovementMethod.getInstance());  
CharSequence text  =  tv.getText();
if (text instanceof Spannable){ 
     int  end  =  text.length();   
     Spannable sp  =  (Spannable)tv.getText();   
     URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );   
             
     SpannableStringBuilder style = new  SpannableStringBuilder(text);   
     style.clearSpans(); // should clear old spans    
     for (URLSpan url : urls){     
          URLSpan myURLSpan=   new  URLSpan(url.getURL());                        
          style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
          style.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);//设置前景色为红色
     } 
     tv.setText(style);   
}
另外一篇文章中有几个具体的实例可以参考:http://hunankeda110.iteye.com/blog/1420470看完的顺手点歌赞呗,谢谢鼓励!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot 核心技术

目录:SpringBoot 核心技术

1012
来自专栏非著名程序员

Android中如何实现图文混排

项目开发中需要实现这种效果,多余两行,两行最后是省略号,省略号后面是下拉更多,之前用过的是Html.fromHtml去处理图文混排的,仅仅是文字后图片或者文字颜...

2089
来自专栏谈补锅

Quartz2D复习(三) --- 涂鸦

和上一篇手势解锁不一样,手势解锁只画了一条路径,从触摸开始--》触摸移动--》触摸结束 ,然后路径完成了,渲染出来就是手势解锁了;

783
来自专栏天天

Canvas

953
来自专栏Python疯子

UILabel在开发中的常用功能总结

在项目开发中,我们经常会遇到在这样情形: 1、在一个UILabel 使用不同的颜色或不同的字体来体现字符串 在iOS 6 以后我们可以很轻松的实现这一点,官...

882
来自专栏DannyHoo的专栏

视图的alpha属性可能会影响子视图的透明度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

912
来自专栏水击三千

浅谈JavaScript的Canvas(绘制图形)

  HTML5中新增加的一个元素canvas,要使用canvas元素,浏览器必须支持html5。通过canvas标签来创建元素,并需要为canvas指定宽度和高...

2346
来自专栏技术总结

教你如何自定义AlertView

2545
来自专栏蜉蝣禅修之道

关于iOS Tabbar的一些设置

1744
来自专栏谈补锅

记录下UIButton的图文妙用和子控件的优先显示

  UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景;

703

扫码关注云+社区