在Android的开发中,对字体样式的设置是必不可少的,普通的设置主要包括字体的颜色,大小。这些都太小儿科了,略过。但是当一个TextView要显示多种样式的时候就不一样了。如要求其中的某几个文字加上特殊的颜色,或者字体加大等。别的不多说,先上一个效果图说明下:
下面针对上图效果做对应的代码展示:
//字体加粗
textview.getPaint().setFlags(Paint.FAKE_BOLD_TEXT_FLAG);
textview.getPaint().setAntiAlias(true);//抗锯齿
//中划线(删除线)
textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
textview.getPaint().setAntiAlias(true);//抗锯齿
// 下划线
textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
textview.getPaint().setAntiAlias(true);
SpannableStringBuilder sb = new SpannableStringBuilder("字体多种颜色一&背景色");
sb.setSpan(new ForegroundColorSpan(Color.RED),0,2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new ForegroundColorSpan(Color.YELLOW),2,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//背景色
sb.setSpan(new BackgroundColorSpan(Color.GREEN), 7, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(sb);
//字体颜色多样,设置其他样式也可以使用
textview.setText(Html.fromHtml("<font color='red'>字体font><font color='#00ff00'>多种颜色font><font color='#0000ff'>二font>"));
//字体大小不一
SpannableStringBuilder sb1 = new SpannableStringBuilder("字体大小样式不一");
sb1.setSpan(new AbsoluteSizeSpan(80), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb1.setSpan(new AbsoluteSizeSpan(40), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//绝对大小
//sb1.setSpan(new RelativeSizeSpan(40), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//相对大小
sb1.setSpan(new AbsoluteSizeSpan(60), 5, sb1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(sb1);
sb.append("设置字符上标");
sb.setSpan(new SuperscriptSpan(), 2, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new RelativeSizeSpan(0.5f),2,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(sb);
sb.append("设置字符下标");
sb.setSpan(new SubscriptSpan(), 2, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(sb);
//;貌似没有Y方向的缩放,但是我们可以通过设置TextView的大小和X方向缩放实现,在此不举例。
sb.append("设置字体缩放。。。");
sb.setSpan(new ScaleXSpan(2f), 2, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new ScaleXSpan(0.5f), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(sb);
到此,简单的例子代码全部上完了,这仅仅是一个思想,在开发过程中需要我们根据不同的情形去使用。如1也可以设置为部分字体加粗,用的方法可以是Html.HtmlFomat()或者是setSpan。2,3同理。在实际的开发过程中,建议讲各个功能分别封装成一个单独的方法,这样用起来比较方便。对于复杂的功能也可以根据需求来封装。由于本人的知识水平能力有限,如果错误或者知识不全面,请提出,共同进步!