Android中TextView实现部分文字可点击跳转

Android中TextView实现部分文字可点击跳转,第1张

概述本文实例为大家分享了TextView部分文字点击跳转的具体代码,供大家参考,具体内容如下

本文实例为大家分享了TextVIEw部分文字可点击跳转的具体代码,供大家参考,具体内容如下

效果图:

需求:每个item的文字都有两部分是连接可点击

当然需要用到SpannableString和ClickableSpan。

import androID.text.TextPaint;import androID.text.style.ClickableSpan;import androID.vIEw.VIEw;import com.xuehu365.xuehu.App;import com.xuehu365.xuehu.R;/** * Created by administrator on 2017/10/11. */public class RecordClickSpan extends ClickableSpan { @OverrIDe public voID onClick(VIEw Widget) { } @OverrIDe public voID updateDrawState(TextPaint ds) {  ds.setcolor(App.getApplication().getResources().getcolor(R.color.c0066CC));  ds.setUnderlineText(false); }}
private voID getRecordContent(BaseVIEwHolder holder,final StudyLogModel logModel) { TextVIEw record = holder.getVIEw(R.ID.record); String coursename = !TextUtils.isEmpty(logModel.getCourseTitle()) ? "《" + logModel.getCourseTitle() + "》" : ""; String lessonname = ":《" + (!TextUtils.isEmpty(logModel.getSourceTitle()) ? logModel.getSourceTitle() + "》" : logModel.getLessonTitle() + "》"); SpannableString courseSpannable = new SpannableString(coursename); SpannableString lessonSpannable = new SpannableString(lessonname); RecordClickSpan courseSpan = new RecordClickSpan() {  @OverrIDe  public voID onClick(VIEw Widget) {   URLBus.doURL("http://www.baIDu.com","",context);  } }; RecordClickSpan lessonSpan = new RecordClickSpan() {  @OverrIDe  public voID onClick(VIEw Widget) {   URLBus.doURL("http://www.taobao.com",context);  } }; courseSpannable.setSpan(courseSpan,coursename.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE); lessonSpannable.setSpan(lessonSpan,lessonname.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE); switch (Integer.parseInt(logModel.getSourceType())) {  case CoursePlanAdapter.VIDEO_liVE:  case CoursePlanAdapter.VIDEO_RECODE:   record.append("观看");   record.append(courseSpannable);   record.append("的视频");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.VOICE_liVE:  case CoursePlanAdapter.VOICE_RECODE:   record.append("收听");   record.append(courseSpannable);   record.append("的语音");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.TEACH_FACE:   record.append("在");   record.append(courseSpannable);   record.append("的面授课时");   record.append(lessonSpannable);   record.append("签到成功");   break;  case CoursePlanAdapter.SURVEY:   record.append("完成");   record.append(courseSpannable);   record.append("的调研");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.EXAM:   record.append("完成");   record.append(courseSpannable);   record.append("的考试");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.WORK:   record.append("完成");   record.append(courseSpannable);   record.append("的作业");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.ARTICLE:   record.append("阅读");   record.append(courseSpannable);   record.append("的文章");   record.append(lessonSpannable);   break;  case CoursePlanAdapter.file:   record.append("下载");   record.append(courseSpannable);   record.append("的文档");   record.append(lessonSpannable);   break;  default:   record.append("完成");   record.append(courseSpannable);   record.append("的");   record.append(lessonSpannable);   break; } record.setMovementMethod(linkMovementMethod.getInstance());}

注意:

1.继承ClickableSpan用来改链接颜色和去掉下划线

2.文字的每个部分的链接都要单独生成一个SpannableString和ClickableSpan,然后对应的setSpan

3.特别特别要注意的是!TextVIEw最后append的时候一定要分别进行,不能一起append,这个坑花了我好些时间

比如:

-----------错误record.append("观看"+courseSpannable+"的视频"+lessonSpannable);-----------正确record.append("观看");record.append(courseSpannable);record.append("的视频");record.append(lessonSpannable);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android中TextView实现部分文字可点击跳转全部内容,希望文章能够帮你解决Android中TextView实现部分文字可点击跳转所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1144159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存