博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发技巧——去掉TextView中autolink的下划线
阅读量:5821 次
发布时间:2019-06-18

本文共 1617 字,大约阅读时间需要 5 分钟。

 

我们知道,在布局文件中设置textview的autolink及其类型,这时textivew上会显示link的颜色,并且文字下面会有一条下划线,表示可以点击。而在我们在点击textview时,应用将根据我们所设置的类型跳转到对应的界面。但是有时,我们因界面需求,需要去掉界面上显示的下划线,并保持功能不变。

如果已经设置了autolink,那么在textview当中再去设置TextPaint为无下划线是无效的,我们可以看URLSpan所继承的类ClickableSpan类的,如下:

 

public abstract class ClickableSpan extends CharacterStyle implements UpdateAppearance {    /**     * Performs the click action associated with this span.     */    public abstract void onClick(View widget);       /**     * Makes the text underlined and in the link color.     */    @Override    public void updateDrawState(TextPaint ds) {        ds.setColor(ds.linkColor);        ds.setUnderlineText(true);    }}

 

可以看到在这里它是重新设置为有下划线的。

 

所以要解决这个问题,就只有再设置一个没有下划线的Spannable对象。

首先,继承一个CharacterStyle或其已实现的子类,重写updateDrawState方法,代码如下:

 

/* * Date: 14-9-4 * Project: Access-Control-V2 */package cn.irains.access.v2.common;import android.text.TextPaint;import android.text.style.UnderlineSpan;/** * 无下划线的Span * Author: msdx (645079761@qq.com) * Time: 14-9-4 上午10:43 */public class NoUnderlineSpan extends UnderlineSpan {    @Override    public void updateDrawState(TextPaint ds) {        ds.setColor(ds.linkColor);        ds.setUnderlineText(false);    }}

 

然后在textview设置了内容之后,调用以下的代码,设置一个span:
NoUnderlineSpan mNoUnderlineSpan = new NoUnderlineSpan();if (textview.getText() instanceof Spannable) {    Spannable s = (Spannable) textview.getText();    s.setSpan(mNoUnderlineSpan, 0, s.length(), Spanned.SPAN_MARK_MARK);}

 

如果你是在listview中使用,并且用了holder,则span对象创建一个就可以了,然后在调用了setText之后再重新设置一遍span。这样textview在界面上就不会有下划线了,但却保留着autolink的功能。

 

本文链接:

转载于:https://www.cnblogs.com/Sharley/p/5732984.html

你可能感兴趣的文章
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
.net excel利用NPOI导入oracle
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
hive基本操作与应用
查看>>
excel快捷键设置
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>
[分享]Ubuntu12.04安装基础教程(图文)
查看>>
django 目录结构修改
查看>>
win8 关闭防火墙
查看>>
CSS——(2)与标准流盒模型
查看>>
MYSQL 基本SQL语句
查看>>
C#中的Marshal
查看>>