項(xiàng)目需求,如果在項(xiàng)目中第一行文字需要添加布局的情況我們應(yīng)該怎么做呢!經(jīng)過(guò)一番考慮和查找我最終選擇了縮進(jìn)的方式解決這個(gè)問(wèn)題武氓。
圖
不多說(shuō)了直接上代碼:
/**
* @param context
* @param textView
* @param mPx
*/
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)
我這里將px轉(zhuǎn)成dp
/**
* dp轉(zhuǎn)px
*
* @param context
* @param dpVal
* @return
*/
public static int dp2px(Context context, float dpVal) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
dpVal, context.getResources().getDisplayMetrics());
}
ok處理完成蛤奢!