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常用属性、背景色下划线、根据字符串长度设置字体大小_第1张图片

 

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

 

你可能感兴趣的:(View,Android笔记)