TextView中autolink的下划线
2017-04-27 15:41
369 查看
布局文件中设置TextView的autolink及其类型,Textivew上会显示link的颜色,对照需求发现文字下面会有一条和字体一样颜色的下划线。在点击Textview时,应用将根据我们所设置的类型跳转到对应的界面。
应需求要求去掉界面上显示的下划线,并保持功能不变。
如果已经设置了autolink,那么在TextView当中再去设置TextPaint为无下划线是无效的,我们可以看URLSpan所继承的类ClickableSpan类的源码,如下:
[java] view
plain copy
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);
}
}
可以看到在这里它是重新设置为有下划线的。于是我们可以重写updateDrawState方法设置一个没有下划线的Spannable对象。
首先,继承一个CharacterStyle或其已实现的子类,重写updateDrawState方法:
[java] view
plain copy
/*
* Date: 14-9-4
* Project: Access-Control-V2
*/
package cn.irains.access.v2.common;
import android.text.TextPaint;
import android.text.style.UnderlineSpan;
/**
* Author: LewChich (pykcliuqi@foxmail.com)
*/
public class NoUnderlineSpan extends UnderlineSpan {
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ds.linkColor);
ds.setUnderlineText(false);
}
}
然后在textview设置了内容之后,实例化,设置一个span:
[java] view
plain copy
NoUnderlineSpan mNoUnderlineSpan = new NoUnderlineSpan();
if (textview.getText() instanceof Spannable) {
Spannable s = (Spannable) textview.getText();
s.setSpan(mNoUnderlineSpan, 0, s.length(), Spanned.SPAN_MARK_MARK);
}
应需求要求去掉界面上显示的下划线,并保持功能不变。
如果已经设置了autolink,那么在TextView当中再去设置TextPaint为无下划线是无效的,我们可以看URLSpan所继承的类ClickableSpan类的源码,如下:
[java] view
plain copy
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);
}
}
可以看到在这里它是重新设置为有下划线的。于是我们可以重写updateDrawState方法设置一个没有下划线的Spannable对象。
首先,继承一个CharacterStyle或其已实现的子类,重写updateDrawState方法:
[java] view
plain copy
/*
* Date: 14-9-4
* Project: Access-Control-V2
*/
package cn.irains.access.v2.common;
import android.text.TextPaint;
import android.text.style.UnderlineSpan;
/**
* Author: LewChich (pykcliuqi@foxmail.com)
*/
public class NoUnderlineSpan extends UnderlineSpan {
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ds.linkColor);
ds.setUnderlineText(false);
}
}
然后在textview设置了内容之后,实例化,设置一个span:
[java] view
plain copy
NoUnderlineSpan mNoUnderlineSpan = new NoUnderlineSpan();
if (textview.getText() instanceof Spannable) {
Spannable s = (Spannable) textview.getText();
s.setSpan(mNoUnderlineSpan, 0, s.length(), Spanned.SPAN_MARK_MARK);
}
相关文章推荐
- Android开发技巧——去掉TextView中autolink的下划线
- Android开发技巧——去掉TextView中autolink的下划线
- Android开发技巧——去掉TextView中autolink的下划线
- Android开发技巧——去掉TextView中autolink的下划线
- android开发:TextView中android:autoLink属性的作用
- textView autolink 和onclick 点击事件冲突
- TextView设置autoLink和linksClickable="true"属性值后长按的问题
- TextView中autoLink属性的设置
- 08-21 RadioGroup,RadioButton autoLink属性 TextView中ellipsize属性 TextView的属性
- 关于在listview中加textview的autolink的问题
- TextView设置autoLink
- android文本组件textView属性autolink设置为web,显示网址的处理方法
- Android textview autolink web 隐藏链接问题
- 记录: android:autoLink 属性 -自动补全AutoCompleteTextView
- 08-21 RadioGroup,RadioButton autoLink属性 TextView中ellipsize属性 TextView的属性
- AutoLinkTextView
- 关于在listview中加textview的autolink的问题
- textview设置属性autolink后,点击网址链接如何捕捉到点击事件或者如何让其跳转到特定的app activity中
- TextView中android:autoLink属性的作用
- android TextView 自动识别电话|网址|邮件(autolink的用法)