常用屬性
maxEms:
ems是印刷排版單位,表示字寬的單位;AndroidTextView setEms() 或者 android:maxEms="13" 作用都是設置TextView的字符寬度
maxLength:
length指的是文本的長度比如:英文、符號、漢子、數字等等這些都屬於文本範圍,所以android:maxLength="13" 的作用就是限制TextView只能顯示13個文本長度。
android:letterSpacing:控制文字水平間距
android:letterSpacing的值是一個浮點數,爲標準字體的倍數作爲間距
如:android:letterSpacing="0.1"
android:lineSpacingExtra:用來設置文字的行間距的
android:lineSpacingExtra="2dp"
使用Spannable實現TextView的富文本效果
如修改TextView文本中某些文字的顏色打下,是否有下劃線,斜體,加粗,增加點擊事件等等效果
SpannableString類的介紹是:
/**
* This is the class for text whose content is immutable but to which
* markup objects can be attached and detached.
* For mutable text, see {@link SpannableStringBuilder}.
*/
public class SpannableString
SpannableString是TextView文本的內容,文本內容不可變,但是其中的文本可以分離出來附加上某些效果。SpannableString只能對一段固定的文本內容修飾,如果要對一段文本附加上多種不同的顯示點擊效果可以使用SpannableStringBuilder
public void setSpan(Object what, int start, int end, int flags) {
super.setSpan(what, start, end, flags);
}
該函數有四個參數,第一個爲一個修飾文本的相關類,第二個參數爲開始位置,第三個位置爲修飾的結束位置,最後一個爲flag參數
flags參數
常用的修飾如下:
SpannableString spannableString = new SpannableString(getString(R.string.notice_text));
//下滑線
UnderlineSpan underlineSpan = new UnderlineSpan();
spannableString.setSpan(underlineSpan, 9, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//前景色
ForegroundColorSpan colorSpan = new ForegroundColorSpan(getResources().getColor(R.color.color_ff5560));
spannableString.setSpan(colorSpan, 9, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//相對文本字體大小的倍數
RelativeSizeSpan sizeSpan01 = new RelativeSizeSpan(1.2f);
spannableString.setSpan(sizeSpan01, 9, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//Url連接
URLSpan urlSpan = new URLSpan(Urls.GOOGLE_APP_URL);
spannableString.setSpan(urlSpan, 9, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tipTxt1.setMovementMethod(LinkMovementMethod.getInstance());
tipTxt1.setText(spannableString);
還有如背景色BackgroudColorSpan、點擊文本ClickableSpan等等30多種,可以進入android.text.style包下去查看所有的Span類
根據textview的字符串長度設置其字體
textview.setTextSize(TypedValue.COMPLEX_UNIT_SP,Tool.getFormatTextSize(16,14,str);
public static intgetFormatTextSize(intdeflateSize,intdeflateLength,String str)
{
if(!TextUtils.isEmpty(str))
{
if(str.replace(" ","").length()>deflateLength)
{
deflateSize =deflateSize*deflateLength/str.length();
}
}
return deflateSize;
}
public static int getFormatEngTextSize(int deflateSize,int deflateLength,String str)
{
if(strIsAllEnglish(str))
deflateLength*=1.8;
deflateSize = getFormatTextSize(deflateSize, deflateLength, str);
return deflateSize;
}
public static boolean strIsAllEnglish(String word) {
for (int i = 0; i < word.length(); i++) {
if(word.charAt(i) == ' ')
continue;
if (!(word.charAt(i) >= 'A' && word.charAt(i) <= 'Z')
&& !(word.charAt(i) >= 'a' && word.charAt(i) <= 'z')) {
return false;
}
}
return true;
}