1,TextView的简单使用
- 1,简单属性介绍
android:text="hello" 设置文本
android:textSize="20sp" 设置字体大小,单位是sp
android:textColor="#ff0000" 设置字体颜色
android:textStyle="normal" 设置字体的样式 (可以组合使用)
normal 正常字体 (默认)
italic 斜体
bold加粗
android:singleLine="true"设置单行显示
android:lines="1" 设置文本占多少行
android:maxLines="5" 设置最多占多少行
表示裁剪文本
android:ellipsize="none"
none不裁剪
start 省略文本前部,用省略号表示
middle 省略中间
end 省略末尾
跑马灯效果
marquee 滚动的
简单跑马灯效果的实现:
- 2,所有属性
1、android:lineSpacingExtra
设置行间距,如”3dp”。
2、android:lineSpacingMultiplier
设置行间距的倍数,如”1.2″。
4,所有属性
android:ems 设置TextView的宽度为N个字符的宽度。
android:maxems 设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:minems 设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:maxLength 限制输入字符数。如设置为5,那么仅可以输入5个汉字/数字/英文字母。
android:lines 设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines 设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines 设置文本的最小行数,与lines类似。
android:lineSpacingExtra 设置行间距。
android:lineSpacingMultiplier 设置行间距的倍数。如”1.2”
android:numeric 如果被设置,该TextView有一个数字输入法。有如下值设置:integer正整数、signed带符号整数、decimal带小数点浮点数。
android:password 以小点”.”显示文本
android:phoneNumber 设置为电话号码的输入方式。
android:singleLine 设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
android:textAppearance 设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor 设置文本颜色
android:textColorHighlight 被选中文字的底色,默认为蓝色
android:textColorHint 设置提示信息文字的颜色,默认为灰色。与hint一起使用。
android:textColorLink 文字链接的颜色.
android:textScaleX 设置文字之间间隔,默认为1.0f。参见TextView的截图。
android:textSize 设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle 设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface 设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:height 设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight 设置文本区域的最大高度
android:minHeight 设置文本区域的最小高度
android:width 设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
android:maxWidth 设置文本区域的最大宽度
android:minWidth 设置文本区域的最小宽度
2,其他方面介绍
- 1,改变部分文字前景色和部分文字背景色
//部分文字前景色
//1,获取全部文字
String srcString = mTvFore.getText().toString();
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(srcString);
spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.RED),
2,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.YELLOW),
1,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//改变部分文字的背景色
spannableStringBuilder.setSpan(new BackgroundColorSpan(Color.GREEN)
,4,6,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
mTvFore.setText(spannableStringBuilder);
- 2,修改部分字体的大小
//修改部分文字的大小
String sizeString = mTvSize.getText().toString();
SpannableString sizeSpan = new SpannableString(sizeString);
//1.5f修改文字的倍数
sizeSpan.setSpan(new RelativeSizeSpan(1.5f),1,2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sizeSpan.setSpan(new ForegroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvSize.setText(sizeSpan);
- 3,设置下划线和中划线
tvOne.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
tvOne.getPaint().setAntiAlias(true);//抗锯齿
tvOne.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//中划线
两条线只能设置一条,textView.getPaint().setFlags(0); // 取消设置的的划线
- 4,设置字体加粗
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//加粗
textView.getPaint().setFakeBoldText(true);//加粗
//android中为textview动态设置字体为粗体
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
}
private void setTextUnBold(TextView textView) {
//设置不为加粗
textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
3,封装工具类
public class TvUtils {
/**
* 富文本设置字体大小
*
* @param srcString
* @param tartgetString
* @param txtSize
* @return
*/
public static SpannableString setTextPartTextSize(String srcString, String tartgetString, int txtSize) {
int position = srcString.indexOf(tartgetString);
SpannableString mSp = new SpannableString(srcString);
if (position >= 0) {
mSp.setSpan(new AbsoluteSizeSpan(txtSize, false), position, position + tartgetString.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return mSp;
}
/**富文本设置字体颜色和大小
* @param srcString
* @param tartgetString
* @param targetColor
* @param txtSizeDp
* @return
*/
public static SpannableString setTextPartTextSize(String srcString, String tartgetString, int targetColor, int txtSizeDp) {
int position = srcString.indexOf(tartgetString);
SpannableString mSp = new SpannableString(srcString);
if (position >= 0) {
mSp.setSpan(new AbsoluteSizeSpan(txtSizeDp, true), position, position + tartgetString.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mSp.setSpan(new ForegroundColorSpan(targetColor), position, position + tartgetString.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return mSp;
}
/**富文本设置部分文字颜色
* @param srcString
* @param tartgetString
* @param targetColor
* @return
*/
public static SpannableString setTextPartColor(String srcString,String tartgetString,int targetColor){
int position = srcString.indexOf(tartgetString);
SpannableString mSp = new SpannableString(srcString);
if (position >= 0) {
mSp.setSpan(new ForegroundColorSpan(targetColor), position, position + tartgetString.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return mSp;
}
/**富文本设置部分文字背景色
* @param srcString
* @param tartgetString
* @param targetColor
* @return
*/
public static SpannableString setTextPartBg(String srcString,String tartgetString,int targetColor){
int position = srcString.indexOf(tartgetString);
SpannableString mSp = new SpannableString(srcString);
if (position >= 0) {
mSp.setSpan(new BackgroundColorSpan(targetColor), position, position + tartgetString.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return mSp;
}
/**设置中划线
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setStrikethrough(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannableString;
}
/**设置下划线
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setUnderline(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
UnderlineSpan underlineSpan = new UnderlineSpan();
spannableString.setSpan(underlineSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannableString;
}
/**同时设置下划线和中划线
* @param src
* @param up
* @param down
* @return
*/
public static SpannableString setUpDownLine(String src,String up,String down){
int uPosition = src.indexOf(up);
int dPosition = src.indexOf(down);
SpannableString mSp = new SpannableString(src);
UnderlineSpan underlineSpan = new UnderlineSpan();
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
if (uPosition >= 0) {
mSp.setSpan(strikethroughSpan, uPosition,uPosition+up.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
if (dPosition >= 0) {
mSp.setSpan(underlineSpan, dPosition,dPosition+down.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
return mSp;
}
/**设置上标
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setUpScript(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
SuperscriptSpan superscriptSpan = new SuperscriptSpan();
spannableString.setSpan(superscriptSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannableString;
}
/**设置下标
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setDownScript(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
SubscriptSpan subscriptSpan = new SubscriptSpan();
spannableString.setSpan(subscriptSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannableString;
}
/**设置部分文字加粗
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setTextBold(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
StyleSpan styleSpan_B = new StyleSpan(Typeface.BOLD);
//StyleSpan styleSpan_I = new StyleSpan(Typeface.ITALIC);
spannableString.setSpan(styleSpan_B, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
// spannableString.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
// textView.setHighlightColor(Color.parseColor("#36969696"));
// textView.setText(spannableString);
return spannableString;
}
/**设置部分文字倾斜
* @param src
* @param start
* @param end
* @return
*/
public static SpannableString setTextItalic(String src,int start,int end){
SpannableString spannableString = new SpannableString(src);
//StyleSpan styleSpan_B = new StyleSpan(Typeface.BOLD);
StyleSpan styleSpan_I = new StyleSpan(Typeface.ITALIC);
//spannableString.setSpan(styleSpan_B, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
// textView.setHighlightColor(Color.parseColor("#36969696"));
// textView.setText(spannableString);
return spannableString;
}
public static SpannableString setTextIcon(String src,int start,int end,Drawable drawable){
SpannableString spannableString = new SpannableString("在文本中添加表情(表情)");
//Drawable drawable = getResources().getDrawable(R.mipmap.icon_one);
drawable.setBounds(0, 0, 42, 42);
ImageSpan imageSpan = new ImageSpan(drawable);
spannableString.setSpan(imageSpan, 6, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannableString;
}
}