一、方法
\u3000 代表一个空白字符,是全角空格的16进制Unicode编码
- 1.布局中设置
<TextView
android:id="@+id/tv_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\u3000\u3000首行缩进了两个字符"
android:textSize="25sp" />
- 2.在java代码中设置
String about = "\u3000\u3000首行缩进了两个字符";
tv_about.setText(about);
二、相关知识
1.\uxxxx:其中xxxx表示一个16进制数字 这种格式是unicode码的写法表示一个char字符
2.三种空格(\u00A0,\u0020,\u3000)表示的区别
(1).不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ;
(2).半角空格(英文符号)\u0020,代码中常用的;
(3).全角空格(中文符号)\u3000,中文文章中使用;
三、SpannableString
public void SJ(Context context, TextView textView, String str, int mPx) {
//1.先创建SpannableString对象
SpannableString spannableString = new SpannableString(str);
//2.设置文本缩进的样式,参数arg0,首行缩进的像素,arg1,剩余行缩进的像素,这里我将像素px转换成了手机独立像素dp
LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(dp2px(context, mPx), 0);
//3.进行样式的设置了,其中参数what是具体样式的实现对象,start则是该样式开始的位置,end对应的是样式结束的位置,参数flags,定义在Spannable中的常量
spannableString.setSpan(what, 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(spannableString);
}
flag有以下四种:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含两端start和end所在的端点
Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端点
Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含两端start,但不包含end所在的端点
Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含两端start和end所在的端点