一、方法
\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進制數(shù)字 這種格式是unicode碼的寫法表示一個char字符
2.三種空格(\u00A0,\u0020,\u3000)表示的區(qū)別
(1).不間斷空格\u00A0,主要用在office中,讓一個單詞在結尾處不會換行顯示,快捷鍵ctrl+shift+space ;
(2).半角空格(英文符號)\u0020,代碼中常用的;
(3).全角空格(中文符號)\u3000,中文文章中使用;
三、SpannableString
public void SJ(Context context, TextView textView, String str, int mPx) {
//1.先創(chuàng)建SpannableString對象
SpannableString spannableString = new SpannableString(str);
//2.設置文本縮進的樣式,參數(shù)arg0,首行縮進的像素,arg1,剩余行縮進的像素,這里我將像素px轉換成了手機獨立像素dp
LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(dp2px(context, mPx), 0);
//3.進行樣式的設置了,其中參數(shù)what是具體樣式的實現(xiàn)對象,start則是該樣式開始的位置,end對應的是樣式結束的位置,參數(shù)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所在的端點