TextView 为部分文字添加下划线,并实现单击事件
在开发应用的过程中经常会遇到显示一些不同的字体风格的信息,如关键词高亮显示的等。对于类似的情况,一般我们会想着使用多个TextView去实现,对于每个TextView设置不同的字体风格来满足需求。
int[] indexs = StringUtil.getRepeatIndexs(content, PARAM_FLAG);
int start = 0;
int end = 0;
for (int i = 0; i < indexs.length; i++) {
String text = mTarget.getUserPassage().split(PARAM_SPLIT)[i];
if (null == text || text.equals(" ")) {
text = PARAM_FLAG;
}
end = indexs[i];
mTvQuestion.append(content.substring(start, end));
mTvQuestion.append(Html.fromHtml("<a href=" + end + " >" + text + "</a>"));
start = end + PARAM_FLAG.length();
}
mTvQuestion.append(content.substring(start));
if (mIsExam) {
// 通过setMovementMethod设置LinkMovementMethod类型来使LinkText有效
mTvQuestion.setMovementMethod(LinkMovementMethod.getInstance());
final CharSequence text = mTvQuestion.getText();
if (text instanceof Spannable) {
int length = text.length();
Spannable sp = (Spannable) text;
//获取文本中原有的URLSpan类型的文本,保存起来
URLSpan[] urls = sp.getSpans(0, length, URLSpan.class);
//使用text创建一个SpannableStringBuilder,通过clearSpans()方法清除原有的Span
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();
// 重新设置text中的URLSpan
for (int i = 0; i < urls.length; i++) {
URLSpan url = urls[i];
final int position = i;
final String value = mTarget.getUserPassage().split(PARAM_SPLIT)[i];
style.setSpan(
new ClickableSpan() {
private boolean isClick = false;
private TextPaint ds;
@Override
public void updateDrawState(TextPaint ds) {
if (isClick) {
ds.setColor(Color.GREEN);
} else {
this.ds = ds;
ds.setColor(Color.RED);
}
ds.setUnderlineText(true);
}
@Override
public void onClick(View keyView) {
isClick = true;
//弹出输入对话框
showDialog(content, position, value);
updateDrawState(ds);
}
}, sp.getSpanStart(url), sp.getSpanEnd(url),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTvQuestion.setText(style);
}
}
该段代码使用ClickableSpan实现点击事件,并且实现超链接单击后变色的功能。注释写的很清楚,相信大家都看的懂,我就不再说明了。
TextView 为部分文字添加下划线,并实现单击事件的更多相关文章
- UILabel,文字添加下划线,中划线
//显示下划线 //中划线 // NSDictionary *attribtDic = @{NSStrikethroughStyleAttributeName: [NSNumber nu ...
- iOS 给UILabel文字加下划线
摘自:http://blog.sina.com.cn/s/blog_6cd380c10101b6hn.html //带下划线的“注” NSMutableAttributedString可变的属性字符串 ...
- iOS开发-UILabel和UIButton添加下划线
关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选择 ...
- vim显示行号、语法高亮、自动缩进、添加下划线的设置
ubuntu默认是没有安装vim的,所以设置以前请先安装vim:sudo apt-get install vim. 然后 打开vim的配置文件:sudo vim /etc/vim/vimrc 或者 s ...
- Android 给EditText添加下划线
在安卓高版本,默认是有下划线的,其默认下划线的颜色是由其主题颜色来控制的! 控制如下: <style name="AppTheme" parent="Theme.A ...
- IOS UIlabel 、UIButton添加下划线
1.给UILabel 添加下划线 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(, , , )]; label.backgrou ...
- UILabel和UIButton添加下划线
关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的 NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选 ...
- "为文本添加下划线"组件:<u> —— 快应用组件库H-UI
 <import name="u" src="../Common/ui/h-ui/text/c_tag_underline"></impor ...
- Android TextView 添加下划线的几种方式
总结起来大概有5种做法: 1. 将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化) 2. 当文字中出现URL.E-mail.电话号码等的时候,可以将TextView ...
随机推荐
- 网易云课堂_C++开发入门到精通_章节4:运算符重载
课时23运算符重载 运算符重载 重载赋值运算符 Person& Person::operator=(const Person& other) { //检查自赋值 if (this == ...
- js算法
最近面试可能会问这些 1,插入排序 function sort(elements){ var res =[elements[0]]; for (var i = 0; i < elements.l ...
- ab -n -c
ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 1 我们可以模拟100个并发用户,对一个页面发送1000个请求 ./ab -n1000 -c1 ...
- 密码算法详解——DES
0 DES简介 在20世纪60年代后期,IBM公司成立了一个由Horst Feistel负责的计算机密码学研究项目.1971年设计出密码算法LUCIFER后,该项目宣告结束.LUCIFER被卖给了伦敦 ...
- Sublime 学习记录(三) Emmet 插件
i. 安装 : 打开命令面板 输入pci 回车 然后输入emmet 回车即可 ii.用处 : 快速编写html和css代码(快捷键:tab建) iii.html用法: 1) 初始化,html ...
- css系列教程--overflow min/maxheight content
outline:这只轮廓样式,与border类似.写法参考border. overflow/overflow-x/overflow-y:visible/hidden/scroll/auto/no-di ...
- dom操作例子
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- C# 输入输出 常量变量
//输出 Console.WriteLine("这是一行文字"); 自动回车的. Console.Write("Hello world"); 不带 ...
- thinkPHP中服务器端的验证
<?php class UserModel extends Model{ //user是表的名称 必须以表名开始,继承Model类 protected $_validate=array( //a ...
- C Traps and Pitfallss
第一章 词法“陷阱” 发送阿罡发公司阿发送个发送阿罡发公司阿发送个 第二章