ems是印刷排版单位,表示字宽的单位;AndroidTextView setEms() 或者 android:maxEms="13" 作用都是设置TextView的字符宽度
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.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;
}