我们知道,在布局文件中设置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.*/@Overridepublic 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 {@Overridepublic 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://www.4byte.cn/learning/90271.html

Android开发技巧——去掉TextView中autolink的下划线相关推荐

  1. autolink android不显示下划线,Android开发技巧——去掉TextView中autolink的下划线

    我们知道,在布局文件中设置textview的autolink及其类型,这时textivew上会显示link的颜色,并且文字下面会有一条下划线,表示可以点击.而在我们在点击textview时,应用将根据 ...

  2. android开发技巧——仿新版QQ锁屏下弹窗

    新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...

  3. Android开发技巧——自定义控件之自定义属性

    Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个 ...

  4. Android开发技巧——自定义控件之组合控件

    Android开发技巧--自定义控件之组合控件 我准备在接下来一段时间,写一系列有关Android自定义控件的博客,包括如何进行各种自定义,并分享一下我所知道的其中的技巧,注意点等. 还是那句老话,尽 ...

  5. 一些很不错的Android开发技巧

    一些很不错的Android开发技巧,这个项目翻译自 android-tips-tricks 去掉了一些我认为不重要的,对我使用过的东东做了评价,同时翻译了一些自己没有注意到的知识点的文章. ❤️ st ...

  6. Android开发技巧——大图裁剪

    本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使 ...

  7. android开发技巧杂谈

    android开发技巧一 android的一些常用包是发布在国外的,所以一些包,我们下载不下来,我们可以使用阿里云的镜像地址(maven { url 'https://maven.aliyun.com ...

  8. 社区说|常用 Android 开发技巧

    活动时间 4月7日(本周四) 20:00-21:00 活动日程 20:00-20:45 主题分享 常用 Android 开发技巧 李老师的开发技巧私房菜,一定有你没吃过的菜! 重构技巧 常用插件 阅读 ...

  9. 【Andrid】去掉android中EditText的下划线

    去掉android中EditText的下划线 android:background="@null"

最新文章

  1. linux硬盘满了问题排查
  2. linux+输出分页,是否可以在zsh中自动分页输出?
  3. mysql数据库保存中文乱码解决参考方案
  4. MapReduce简述、工作流程
  5. 数据双向绑定_手把手教你用JavaScript如何实现数据双向绑定
  6. premiere cs 下载
  7. Rethinking算法实习生
  8. JMeter定制功能实现
  9. ST-Link下载 KELL5程序下载 STM32程序下载
  10. BP 神经网络的非线性系统建模——非线性函数拟合
  11. SSM项目实战之十:用户信息查询
  12. RN项目集成react-native-code-push(四)-- ReactNative项目集成react-native-code-push
  13. 怎么购买虚拟主机合适?
  14. Android Dex 分包+热修复(QQ空间技术方案)
  15. 香侬专栏 | 独家对话斯坦福大学计算机系教授Percy Liang
  16. JAVA必背面试题和项目面试通关要点
  17. 【Python-数据结构】——线性结构
  18. 企业级项目分享:购物车模块(一)2021-06-08
  19. 13位巴克码二相相位编码模糊图
  20. 带你走进 ERNIE

热门文章

  1. Re: 求助:5道算法题
  2. 最近做了一个小小的系统,收获挺大的....我想总结一下
  3. Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死
  4. 多线程并发编程需要注意虚假唤醒Spurious wakeup
  5. php报错Permission denied
  6. ubuntu下vim的配置
  7. WMI技术介绍和应用——查询正在运行的进程信息
  8. 损失函数之Cross-Entropy介绍及C++实现
  9. java rectangle获取xy_JFreeChart 动态移动线 并求出两条线交点XY
  10. 按下enter键在各个文本框中切换焦点_你真的了解Enter键吗?请先学习本文后再回答...