ParagraphStyle
主要用于段落级别的文本格式化。
1. LeadingMarginSpan
LeadingMarginSpan
可以设置行的缩进。
LeadingMarginSpan.Standard(int first, int rest)
,first
设置首行缩进,rest
设置其他行的缩进LeadingMarginSpan.Standard(int every)
,every
设置所有行的缩进LeadingMarginSpan.Standard(Parcel src)
,从Parcel
中读取数据
设置不同的缩进方式,
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new LeadingMarginSpan.Standard(60), 0, ss.length(), 0);
ss.setSpan(new LeadingMarginSpan.Standard(60, 20), 0, ss.length(), 0);
显示如下,第一个是正常的段落显示,第二个所有的段落缩进,第三个是首行缩进。
2. BulletSpan
BulletSpan
在段落前加一个圆点,
BulletSpan()
,默认gapWidth=2
,圆点颜色是黑色BulletSpan(int gapWidth)
,gapWidth
设置圆点和段落间距离BulletSpan(int gapWidth, int color)
,color
设置圆点颜色BulletSpan(Parcel src)
,从Parcel
中读取数据
设置不同圆点效果
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new BulletSpan(), 0, ss.length(), 0);
ss.setSpan(new BulletSpan(20, Color.RED), 0, ss.length(), 0);
显示如下
3. QuoteSpan
QuoteSpan
在文本左边加上一条竖直的线
QuoteSpan()
,默认竖线颜色是蓝色QuoteSpan(int color)
,color
设置竖线颜色QuoteSpan(Parcel src)
,从Parcel
中读取数据
设置不同竖线效果
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new QuoteSpan(), 0, ss.length(), 0);
ss.setSpan(new QuoteSpan(Color.RED), 0, ss.length(), 0);
显示如下
4. DrawableMarginSpan
DrawableMarginSpan
在文本左边加一个图片
DrawableMarginSpan(Drawable drawable)
,drawable
指定图片DrawableMarginSpan(Drawable drawable, int pad)
,pad
参数指图标和文字之间的距离
设置图片效果
Drawable drawable = getDrawable(R.drawable.checkbox_s);
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new DrawableMarginSpan(drawable), 0, ss.length(), 0);
ss.setSpan(new DrawableMarginSpan(drawable, 20), 0, ss.length(), 0);
显示如下
5. IconMarginSpan
IconMarginSpan
和DrawableMarginSpan
效果类似,只是参数是Bitmap
类型
IconMarginSpan(Bitmap bitmap)
,bitmap
指定图片IconMarginSpan(Bitmap bitmap, int pad)
,pad
参数指图标和文字之间的距离
设置图片效果
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_s);
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new IconMarginSpan(bmp), 0, ss.length(), 0);
ss.setSpan(new IconMarginSpan(bmp, 20), 0, ss.length(), 0);
6. 组合效果
可以叠加效果
SpannableString ss = new SpannableString(getString(R.string.poetry));
ss.setSpan(new BulletSpan(), 0, ss.length(), 0);
ss.setSpan(new LeadingMarginSpan.Standard(40, 0), 0, ss.length(), 0);
效果如下