Textview常用屬性、背景色下劃線、根據字符串長度設置字體大小

常用屬性

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;  
   }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章