在Android 中實作字型的一些特殊效果一般都是用SpannableString 來實作的OK,先來張圖
在此實作之前先說明幾個重要的屬性
1.實作前景色
//設定前景色
private SpannableString setForegroundColorSpan(){
SpannableString spannableString =new SpannableString("這條文字前面前景色");
spannableString.setSpan(new ForegroundColorSpan(Color.BLUE),, , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
2.設定字型的超連結
// 設定超連結
private SpannableString setLinkLine(){
SpannableString spannableString =new SpannableString("這是一個連結");
URLSpan urlSpan =new URLSpan("http://www.baidu.com");
spannableString.setSpan(urlSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
return spannableString;
}
3.設定一個下劃線的效果一般也可同過加載HTML的u标簽來實作這裡就不贅述
//設定下劃線 也可以用HTML 的 u标簽來顯示
private SpannableString setUnderline(){
SpannableString spannableString =new SpannableString("我是下劃線");
UnderlineSpan underlineSpan =new UnderlineSpan();
spannableString.setSpan(underlineSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
4.設定删除線
private SpannableString setDeleteLine(){
SpannableString spannableString =new SpannableString("我是删除線");
StrikethroughSpan deleteLine =new StrikethroughSpan();
spannableString.setSpan(deleteLine,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
5.設定可以點選的字
//在點選的操作時還需要加入
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
private SpannableString setClickSpan(){
SpannableString spannableString =new SpannableString("點個看看");
ClickableSpan clickableSpan =new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(ColorTextActivity.this,"click",Toast.LENGTH_SHORT).show();
mTextView.setHighlightColor(Color.TRANSPARENT); //消除變色後字型變色
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.GREEN); // 設定可點選字型的顔色
ds.setUnderlineText(false); //設定沒有下劃線
ds.clearShadowLayer();
}
};
spannableString.setSpan(clickableSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
6.是SpannableStringBuilder 的一個用法
private void setSpannableBuilder(){
SpannableStringBuilder builder =new SpannableStringBuilder();
builder.append(setForegroundColorSpan());
builder.append(setLinkLine());
builder.append(setUnderline());
builder.append(setDeleteLine());
builder.append(setClickSpan());
mTextView.setText(builder); // 将内容顯示在textview上
}
OK,打完收工