欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-12 12:30:40
本文实例为大家分享了textview部分文字可点击跳转的具体代码,供大家参考,具体内容如下 效果图: 需求:每个item的文字都有两部分是连接可点击 当然需要用到...

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

效果图:

Android中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, 0, coursename.length(), spanned.span_inclusive_exclusive);
 lessonspannable.setspan(lessonspan, 0, 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);

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

上一篇:

下一篇: