Android中TextView實現(xiàn)部分文字可點擊跳轉(zhuǎn)
本文實例為大家分享了TextView部分文字可點擊跳轉(zhuǎn)的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:

需求:每個item的文字都有兩部分是連接可點擊
當(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("的面授課時");
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.文字的每個部分的鏈接都要單獨生成一個SpannableString和ClickableSpan,然后對應(yīng)的setSpan
3.特別特別要注意的是!TextView最后append的時候一定要分別進(jìn)行,不能一起append,這個坑花了我好些時間
比如:
-----------錯誤
record.append("觀看"+courseSpannable+"的視頻"+lessonSpannable);
-----------正確
record.append("觀看");
record.append(courseSpannable);
record.append("的視頻");
record.append(lessonSpannable);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android ScrollView顯示到底部或任意位置實現(xiàn)代碼
這篇文章主要介紹了 Android ScrollView顯示到底部或任意位置實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
Android加載對話框同時異步執(zhí)行實現(xiàn)方法
Android中通過子線程連接網(wǎng)絡(luò)獲取資料,同時顯示加載進(jìn)度對話框給用戶的操作2012-11-11
android動態(tài)設(shè)置app當(dāng)前運行語言的方法
下面小編就為大家?guī)硪黄猘ndroid動態(tài)設(shè)置app當(dāng)前運行語言的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Android簡單創(chuàng)建一個Activity的方法
這篇文章主要介紹了Android簡單創(chuàng)建一個Activity的方法,結(jié)合圖文形式分析了Android創(chuàng)建Activity的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下2016-04-04
Android開發(fā)中PopupWindow用法實例分析
這篇文章主要介紹了Android開發(fā)中PopupWindow用法,結(jié)合實例形式分析了PopupWindow彈出窗口效果的使用技巧,需要的朋友可以參考下2016-02-02

