/** * @param what 设置的格式(前景色、背景色、点击的文本等等) * @param start 需要设置格式的子字符串的起始下标 * @param end 需要设置格式的子字符串的终了下标 * @param flags 共有四种属性 * Spanned.SPAN_INCLUSIVE_EXCLUSIVE,从起始下标到终了下标,包括起始下标 * Spanned.SPAN_INCLUSIVE_INCLUSIVE,从起始下标到终了下标,同时包括起始下标和终了下标 * Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,从起始下标到终了下标,但都不包括起始下标和终了下标 * Spanned.SPAN_EXCLUSIVE_INCLUSIVE,从起始下标到终了下标,包括终了下标 */ setSpan(Object what, int start, int end, int flags);
设置前景色
1 2 3 4
SpannableString str = new SpannableString("设置文字的前景色为淡蓝色"); ForegroundColorSpan color = new ForegroundColorSpan(Color.parseColor("#0099EE")); str.setSpan(color, 9, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
设置背景色
1 2 3 4
SpannableString str = new SpannableString("设置文字的背景色为淡绿色"); BackgroundColorSpan color = new BackgroundColorSpan(Color.parseColor("#AC00FF30")); str.setSpan(color, 9, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
设置文字相对大小
1 2 3 4 5 6 7 8 9 10
SpannableString str = new SpannableString("万丈高楼平地起"); RelativeSizeSpan size01 = new RelativeSizeSpan(1.2f); RelativeSizeSpan size02 = new RelativeSizeSpan(1.4f); RelativeSizeSpan size03 = new RelativeSizeSpan(1.6f); RelativeSizeSpan size04 = new RelativeSizeSpan(1.8f); str.setSpan(size01, 0, 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); str.setSpan(size02, 1, 2, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); str.setSpan(size03, 2, 3, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); str.setSpan(size04, 3, 4, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
为文本设置中划线(删除线)
1 2 3 4
SpannableString str = new SpannableString("为文字设置删除线"); StrikethroughSpan span = new StrikethroughSpan(); str.setSpan(span, 5, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
为文本设置下划线
1 2 3 4
SpannableString str = new SpannableString("为文字设置下划线"); UnderlineSpan span = new UnderlineSpan(); str.setSpan(span, 5, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
设置上标
1 2 3 4 5
SpannableString str = new SpannableString("为文字设置上标"); SuperscriptSpan span = new SuperscriptSpan(); str.setSpan(span, 5, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str); // 被设置为上标的文字大小和文本文字大小一样,结合RelativeSizeSpan设置小字体文本作为上标
设置下标
1 2 3 4
SpannableString str = new SpannableString("为文字设置下标"); SubscriptSpan span = new SubscriptSpan(); str.setSpan(span, 5, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);
为文字设置风格(粗体、斜体、粗斜体)
1 2 3 4 5 6 7 8
SpannableString str = new SpannableString("为文字设置粗体/斜体/粗斜体风格"); StyleSpan styleSpan_B = new StyleSpan(Typeface.BOLD); StyleSpan styleSpan_I = new StyleSpan(Typeface.ITALIC); StyleSpan styleSpan_BI = new StyleSpan(Typeface.BOLD_ITALIC); str.setSpan(styleSpan_B, 5, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); str.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); str.setSpan(styleSpan_BI, 11, 14, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(str);