一、方法
\u3000 代表一個(gè)空白字符,是全角空格的16進(jìn)制Unicode編碼
- 1.布局中設(shè)置
<TextView
android:id="@+id/tv_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\u3000\u3000首行縮進(jìn)了兩個(gè)字符"
android:textSize="25sp" />
- 2.在java代碼中設(shè)置
String about = "\u3000\u3000首行縮進(jìn)了兩個(gè)字符";
tv_about.setText(about);
二、相關(guān)知識(shí)
1.\uxxxx:其中xxxx表示一個(gè)16進(jìn)制數(shù)字 這種格式是unicode碼的寫(xiě)法表示一個(gè)char字符
2.三種空格(\u00A0,\u0020,\u3000)表示的區(qū)別
(1).不間斷空格\u00A0,主要用在office中,讓一個(gè)單詞在結(jié)尾處不會(huì)換行顯示,快捷鍵ctrl+shift+space ;
(2).半角空格(英文符號(hào))\u0020,代碼中常用的;
(3).全角空格(中文符號(hào))\u3000,中文文章中使用;
三、SpannableString
public void SJ(Context context, TextView textView, String str, int mPx) {
//1.先創(chuàng)建SpannableString對(duì)象
SpannableString spannableString = new SpannableString(str);
//2.設(shè)置文本縮進(jìn)的樣式,參數(shù)arg0,首行縮進(jìn)的像素,arg1,剩余行縮進(jìn)的像素,這里我將像素px轉(zhuǎn)換成了手機(jī)獨(dú)立像素dp
LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(dp2px(context, mPx), 0);
//3.進(jìn)行樣式的設(shè)置了,其中參數(shù)what是具體樣式的實(shí)現(xiàn)對(duì)象,start則是該樣式開(kāi)始的位置,end對(duì)應(yīng)的是樣式結(jié)束的位置,參數(shù)flags,定義在Spannable中的常量
spannableString.setSpan(what, 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(spannableString);
}
flag有以下四種:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含兩端start和end所在的端點(diǎn)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端點(diǎn)
Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含兩端start,但不包含end所在的端點(diǎn)
Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含兩端start和end所在的端點(diǎn)