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

本文共 1566 字,大约阅读时间需要 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的功能。

 

本文链接:

转载地址:http://egvyo.baihongyu.com/

你可能感兴趣的文章
深入理解 python 元类
查看>>
最常用的Linux命令
查看>>
MVC+Ninject+三层架构+代码生成 -- 总结(四、數據層)
查看>>
python之XML文件解析
查看>>
白盒测试实践-任务完成
查看>>
vue el-form鼠标事件导致页面刷新解决方案;vue 阻止多次点击提交数据通用方法...
查看>>
java List集合中contains方法总是返回false
查看>>
java遍历的优化
查看>>
Oracle PL/SQL编程学习笔记:Merge方法的使用
查看>>
首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持
查看>>
css3之 渐变
查看>>
MongoDB给数据库创建用户
查看>>
ios开发日记- 5 屏幕截图
查看>>
iOS开发笔记-两种单例模式的写法
查看>>
生成.a文件步骤
查看>>
雷达扫描动画
查看>>
[转]C++11 随机数学习
查看>>
timesten 修改最大连接数
查看>>
weblogic域,管理服务器,受管服务器,集群和机器的基本知识
查看>>
mouseover与mouseenter,mouseout与mouseleave的区别
查看>>