XSpanned使用笔记

一.代码位置

  • Spanned
    此文是在此基础上做的讲解,用于加深印象

二.引用

  1. 将JitPack存储库添加到您的构建文件中
    将其添加到存储库末尾的root build.gradle中:

    1
    2
    3
    4
    5
    6
    allprojects {
    repositories {
    ...
    maven { url 'https://jitpack.io' }
    }
    }
  2. 添加依赖项

    1
    2
    3
    4
    dependencies {
    ...
    implementation 'com.github.itemuse:XLib:Tag'
    }
  3. 初始化 Application中init

    1
    2
    3
    4
    5
    6
    7
    import cn.xy.library.XApp;
    ...
    @Override
    public void onCreate() {
    super.onCreate();
    XApp.init(this);
    }

三.使用

  • 初始化

把textview控件传过去即可
append传入要显示的字符

1
2
3
4
TextView mTextview = findViewById(R.id.text);
SpanUtils.with(mTextview)
.append(getString(R.string.text))
.create();
  • 设置字体大小

1
2
3
4
5
6
.append("X")
.setFontSize(50)
.append("Y")
.setFontSize(150)
.append("Z")
.setFontSize(20)
  • 前景色、背景色

1
.setForegroundColor(getColor(R.color.colorAccent1))
1
.setBackgroundColor(getColor(R.color.colorAccent1))
  • 设置引用线颜色

1
.setQuoteColor(getColor(R.color.colorAccent1))
  • 设置缩进

1
.setLeadingMargin(50, /*第一行缩进值*/ 0 /*其余行缩进值*/)

设置前

设置后

  • 设置行高

1
2
3
4
5
6
7
/*
public static final int ALIGN_BOTTOM = 0;
public static final int ALIGN_BASELINE = 1;
public static final int ALIGN_CENTER = 2;
public static final int ALIGN_TOP = 3;
*/
.setLineHeight(100/*行高*/,SpanUtils.ALIGN_CENTER/*重心*/)

设置前

设置后

  • 字体比例

修改前:

1
2
3
.append(getString(R.string.text))
.append(getString(R.string.text))
.append(getString(R.string.text))

修改后:

1
2
3
4
5
6
.append(getString(R.string.text))
.setFontProportion((float) 1.9) //整体比例
.append(getString(R.string.text))
.setFontXProportion((float) 1.5)//宽度比例
.append(getString(R.string.text))
.setFontXProportion((float) 0.3)//宽度比例
  • 删除线、下划线

1
.setStrikethrough() //删除线
1
.setUnderline() //下划线
  • 设置粗体、斜体

1
2
3
4
5
6
.append(getString(R.string.text))
.setBold() //设置粗体
.append(getString(R.string.text))
.setItalic() //设置斜体
.append(getString(R.string.text))
.setBoldItalic() //设置粗斜体
  • 设置字体

1
2
3
4
5
6
.append(getString(R.string.text))
.setTypeface(Typeface.DEFAULT_BOLD) //设置字体
.append(getString(R.string.text))
.setTypeface(Typeface.SANS_SERIF) //设置字体
.append(getString(R.string.text))
.setTypeface(Typeface.SERIF) //设置字体
  • 设置单独点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.append("点击事件1")
.setClickSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
XLog.i("//设置点击事件1");
}
}) //设置点击事件
.append("点击事件2")
.setClickSpan(getColor(R.color.colorAccent4),true, new View.OnClickListener() {
@Override
public void onClick(View view) {
XLog.i("//设置点击事件2");
}
}) //设置点击事件

打印

1
2
2021-01-12 00:29:12.802 13577-13577/com.softwinner.app I/MainActivity.java: [ (MainActivity.java:75)#onClick ] //设置点击事件1
2021-01-12 00:29:13.190 13577-13577/com.softwinner.app I/MainActivity.java: [ (MainActivity.java:82)#onClick ] //设置点击事件2
  • 超链接

1
2
.append(getString(R.string.text))
.setUrl("http://www.baidu.com") //设置超链接

点击会跳转浏览器

  • 设置模糊

1
2
3
4
5
6
7
8
.append(getString(R.string.text))
.setBlur((float) 1, BlurMaskFilter.Blur.SOLID) //设置模糊
.append(getString(R.string.text))
.setBlur((float) 1, BlurMaskFilter.Blur.OUTER) //设置模糊
.append(getString(R.string.text))
.setBlur((float) 1, BlurMaskFilter.Blur.INNER) //设置模糊
.append(getString(R.string.text))
.setBlur((float) 1, BlurMaskFilter.Blur.NORMAL) //设置模糊
  • 设置阴影

1
2
.append(getString(R.string.text))
.setShadow(15,5,5,getColor(R.color.colorAccent1)) //设置阴影
  • 追加图片

1
2
.append("追加图片")
.appendImage(R.drawable.ic_launcher_background,SpanUtils.ALIGN_BOTTOM) //追加图片
  • 追加空格

1
2
3
.append("追加图片")
.appendSpace(20) //追加空白
.append("追加图片")