Android ---------- 富文本構建
阿新 • • 發佈:2018-11-03
spa lex setbounds san 方法 line mil spanned code
String txt="";
int start=0,end=9;
//創建一個 SpannableString對象
SpannableString str = new SpannableString(txt);
//
設置 字體(default,default-bold,monospace,serif,sans-serif)
str.setSpan(new TypefaceSpan("monospace"),start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//
設置 字體大小(絕對值,單位:像素)
str.setSpan(new AbsoluteSizeSpan(20,true), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二個參數boolean dip,如果為true,表示前面的字體大小單位為dip,否則為像素
//設置字體大小(相對值,單位:像素) 參數表示為默認字體大小的多少倍
str.setSpan(
new
RelativeSizeSpan(
0
.5f),start
,end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//0.5f表示默認字體大小的一半
//設置字體前景色
str.setSpan(
new
ForegroundColorSpan(Color.MAGENTA), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置前景色為洋紅色
//設置字體背景色
str.setSpan(
new
BackgroundColorSpan(Color.CYAN), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置背景色為青色
//設置字體樣式正常,粗體,斜體,粗斜體
str.setSpan(
new
StyleSpan(android.graphics.Typeface.NORMAL), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//正常
str.setSpan(
new
StyleSpan(android.graphics.Typeface.BOLD), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//粗體
str.setSpan(
new
StyleSpan(android.graphics.Typeface.ITALIC), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//斜體
str.setSpan(
new
StyleSpan(android.graphics.Typeface.BOLD_ITALIC), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//粗斜體
//設置下劃線
str.setSpan(
new
UnderlineSpan(), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置刪除線
str.setSpan(
new
StrikethroughSpan(), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置上下標
str.setSpan(
new
SubscriptSpan(), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//下標
str.setSpan(
new
SuperscriptSpan(), start
, end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//上標
//超級鏈接(需要添加setMovementMethod方法附加響應)
str.setSpan(
new
URLSpan(
"tel:4155551212"
),
37
,
39
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//電話
str.setSpan(
new
URLSpan(
"mailto:[email protected]"
),
39
,
41
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//郵件
str.setSpan(
new
URLSpan("http://www.sistergate.com"
),
41
,
43
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //網絡
str.setSpan(
new
URLSpan(
"sms:4155551212"
),
43
,
45
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//短信 使用sms:或者smsto:
str.setSpan(
new
URLSpan(
"mms:4155551212"
),
45
,
47
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//彩信 使用mms:或者mmsto:
str.setSpan(
new
URLSpan(
"geo:38.899533,-77.036476"
),
47
,
49
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//地圖
//設置字體大小(相對值,單位:像素) 參數表示為默認字體寬度的多少倍
str.setSpan(
new
ScaleXSpan(
2
.0f),
start
,
end
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//2.0f表示默認字體寬度的兩倍,即X軸方向放大為默認字體的兩倍,而高度不變
//設置圖片
Drawable drawable = getResources().getDrawable(R.drawable.icon);
drawable.setBounds(
0
,
0
, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
str.setSpan(
new
ImageSpan(drawable),
53
,
57
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置圖片
ImageSpan span = new ImageSpan(this,R.mipmap.ic_launcher);
SpannableString spannableString = new SpannableString(CONTENT);
spannableString.setSpan(span,0,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvTextView.setText(spannableString);
mTextView.setText(msp);
Android ---------- 富文本構建