本文實例為大家分享了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);以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答