Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接
生活随笔
收集整理的這篇文章主要介紹了
Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
代碼應(yīng)該都能看明白
public class MainActivity extends ActionBarActivity {private TextView tv, tv2;private SpannableString sStr, sStr2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) this.findViewById(R.id.textView1);tv2 = (TextView) this.findViewById(R.id.textView2);//創(chuàng)建一個SpannableString對象sStr = new SpannableString("最是那一低頭的溫柔,像一朵水蓮花不勝涼風(fēng)的嬌羞,道一聲珍重,道一聲珍重,那一聲珍重里有蜜甜的憂愁");//設(shè)置字體(default,default-bold,monospace,serif,sans-serif)sStr.setSpan(new TypefaceSpan("default"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("default-bold"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("monospace"), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("serif"), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("sans-serif"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設(shè)置字體大小(絕對值,單位:像素),第二個參數(shù)boolean dip,如果為true,表示前面的字體大小單位為dip,否則為像素sStr.setSpan(new AbsoluteSizeSpan(20), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new AbsoluteSizeSpan(20, true), 12, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置字體大小(相對值,單位:像素) 參數(shù)表示為默認字體大小的多少倍 ,0.5表示一半sStr.setSpan(new RelativeSizeSpan(0.5f), 14, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置字體前景色 sStr.setSpan(new ForegroundColorSpan(Color.RED), 16, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置字體背景色 sStr.setSpan(new BackgroundColorSpan(Color.CYAN), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設(shè)置字體樣式: NORMAL正常,BOLD粗體,ITALIC斜體,BOLD_ITALIC粗斜體 sStr.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 20, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sStr.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 23, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設(shè)置下劃線 sStr.setSpan(new UnderlineSpan(), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置刪除線 sStr.setSpan(new StrikethroughSpan(), 26, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設(shè)置上下標 sStr.setSpan(new SubscriptSpan(), 28, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sStr.setSpan(new SuperscriptSpan(), 30, 32, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置字體大小(相對值,單位:像素) 參數(shù)表示為默認字體寬度的多少倍 ,2.0f表示默認字體寬度的兩倍,即X軸方向放大為默認字體的兩倍,而高度不變sStr.setSpan(new ScaleXSpan(2.0f), 32, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置項目符號 sStr.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,sStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一個參數(shù)表示項目符號占用的寬度,第二個參數(shù)為項目符號的顏色//設(shè)置圖片 Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());sStr.setSpan(new ImageSpan(drawable), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);tv.setText(sStr);tv.setMovementMethod(LinkMovementMethod.getInstance());sStr2 = new SpannableString("電話郵件百度一下短信彩信進入地圖");//超級鏈接(需要添加setMovementMethod方法附加響應(yīng)) sStr2.setSpan(new URLSpan("tel:8008820"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //電話 sStr2.setSpan(new URLSpan("mailto:kejunlu@qq.com"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //郵件 sStr2.setSpan(new URLSpan("http://www.baidu.com"), 4, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //網(wǎng)絡(luò) sStr2.setSpan(new URLSpan("sms:10086"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //短信 使用sms:或者smsto: sStr2.setSpan(new URLSpan("mms:10086"), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //彩信 使用mms:或者mmsto: sStr2.setSpan(new URLSpan("geo:32.123456,-17.123456"), 12, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //地圖 tv2.setText(sStr2);tv2.setMovementMethod(LinkMovementMethod.getInstance());}效果圖:
總結(jié)
以上是生活随笔為你收集整理的Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 递归算法及其时间复杂度分析
- 下一篇: c语言编程游戏开代码错误,[蓝桥杯][历