1. 程式人生 > >Android ---------- 富文本構建

Android ---------- 富文本構建

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 ---------- 富文本構建