Android中TextView實(shí)現(xiàn)部分文字可點(diǎn)擊跳轉(zhuǎn)
本文實(shí)例為大家分享了TextView部分文字可點(diǎn)擊跳轉(zhuǎn)的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
需求:每個(gè)item的文字都有兩部分是連接可點(diǎn)擊
當(dāng)然需要用到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("的面授課時(shí)"); record.append(lessonSpannable); record.append("簽到成功"); break; case CoursePlanAdapter.SURVEY: record.append("完成"); record.append(courseSpannable); record.append("的調(diào)研"); 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("的作業(yè)"); 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.文字的每個(gè)部分的鏈接都要單獨(dú)生成一個(gè)SpannableString和ClickableSpan,然后對(duì)應(yīng)的setSpan
3.特別特別要注意的是!TextView最后append的時(shí)候一定要分別進(jìn)行,不能一起append,這個(gè)坑花了我好些時(shí)間
比如:
-----------錯(cuò)誤 record.append("觀看"+courseSpannable+"的視頻"+lessonSpannable); -----------正確 record.append("觀看"); record.append(courseSpannable); record.append("的視頻"); record.append(lessonSpannable);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android利用CountDownTimer實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- Android實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- Android賬號(hào)注冊(cè)實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- Android studio點(diǎn)擊跳轉(zhuǎn)WebView詳解
- Android中TextView自動(dòng)識(shí)別url且實(shí)現(xiàn)點(diǎn)擊跳轉(zhuǎn)
- Android TextView中文本點(diǎn)擊文字跳轉(zhuǎn) (代碼簡(jiǎn)單)
- Android開發(fā)歡迎頁點(diǎn)擊跳過倒計(jì)時(shí)進(jìn)入主頁
相關(guān)文章
android連續(xù)拖動(dòng)導(dǎo)致掛起的解決方法
本文給大家分享的是在安卓的項(xiàng)目開發(fā)中遇到連續(xù)拖動(dòng)對(duì)象,導(dǎo)致掛起的問題的解決方法,也是經(jīng)過很多網(wǎng)友的提示,最終才找到解決方法,這里記錄一下,分享給大家。2015-05-05Android ScrollView顯示到底部或任意位置實(shí)現(xiàn)代碼
這篇文章主要介紹了 Android ScrollView顯示到底部或任意位置實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02深入探究Android動(dòng)態(tài)代理的原理及用途
動(dòng)態(tài)代理是一種在編程中非常有用的設(shè)計(jì)模式,它允許你在運(yùn)行時(shí)創(chuàng)建一個(gè)代理對(duì)象來代替原始對(duì)象,以便在方法調(diào)用前后執(zhí)行額外的邏輯,本文將深入探討Android動(dòng)態(tài)代理的原理、用途和實(shí)際示例2023-09-09Android加載對(duì)話框同時(shí)異步執(zhí)行實(shí)現(xiàn)方法
Android中通過子線程連接網(wǎng)絡(luò)獲取資料,同時(shí)顯示加載進(jìn)度對(duì)話框給用戶的操作2012-11-11android動(dòng)態(tài)設(shè)置app當(dāng)前運(yùn)行語言的方法
下面小編就為大家?guī)硪黄猘ndroid動(dòng)態(tài)設(shè)置app當(dāng)前運(yùn)行語言的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Android簡(jiǎn)單創(chuàng)建一個(gè)Activity的方法
這篇文章主要介紹了Android簡(jiǎn)單創(chuàng)建一個(gè)Activity的方法,結(jié)合圖文形式分析了Android創(chuàng)建Activity的具體步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-04-04Android開發(fā)中PopupWindow用法實(shí)例分析
這篇文章主要介紹了Android開發(fā)中PopupWindow用法,結(jié)合實(shí)例形式分析了PopupWindow彈出窗口效果的使用技巧,需要的朋友可以參考下2016-02-02Android自定義標(biāo)尺滑動(dòng)選擇值效果
這篇文章主要為大家詳細(xì)介紹了Android自定義標(biāo)尺滑動(dòng)選擇值效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09