贵阳网站建设方案咨询,建筑企业资质查询网站,广州万户网络技术有限公司深圳分公司,互联网优化营销在开发中有时候需要给同一个TextView设置不同样式#xff0c;比如修改某些字体颜色、字体大小、粗体、斜体等#xff0c;再比如在文字中加一些图标等#xff1b;
1.Html.fromHtml
在Android中是支持Html标签的使用的#xff0c;但并不是所有的HTML标签都支持。
HTML基础… 在开发中有时候需要给同一个TextView设置不同样式比如修改某些字体颜色、字体大小、粗体、斜体等再比如在文字中加一些图标等
1.Html.fromHtml
在Android中是支持Html标签的使用的但并不是所有的HTML标签都支持。
HTML基础使用案例 String content font color#FF0000 name /font;if (Build.VERSION.SDK_INT 24){text.setText(Html.fromHtml(content,Html.FROM_HTML_MODE_COMPACT));}else{text.setText(Html.fromHtml(content));}
HTML图片文字混合使用案例 String content img src getDrawableId(context, icon_test) ;tv.setText(Html.fromHtml(content, getImageGetter(), null));SuppressLint(UseCompatLoadingForDrawables)private Html.ImageGetter getImageGetter() {return source - {Drawable drawable mContext.getDrawable(Integer.parseInt(source));drawable.setBounds(0, 0, 60, 60);return drawable;};}
2.SpannableString
Android富文本
基础使用样式:
SpannableString spannableString new SpannableString(xxxxxxxx);
BackgroundColorSpan backgroundColorSpan new BackgroundColorSpan(Color.RED);
spannableString.setSpan(backgroundColorSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString);spannableString.setSpan(Object what, int start, int end, int flags); 参数详解 what各种Span可以对spannableString不同修饰 ForegroundColorSpan前景色BackgroundColorSpan背景色ClickableSpan抽象类可点击效果重写onClick方法响应点击事件URLSpan超链接MaskFilterSpanEmbossMaskFilter浮雕效果BlurMaskFilter模糊效果RelativeSpan文字相对大小AbsoluteSpan文字绝对大小ScaleXSpanx轴缩放styleSpan文字样式TypefaceSpan文字字体类型TextApearanceSpan文字外貌UnderlineSpan下划线StrikeThroughSpan删除线SuperscriptSpan上标SubscriptSpan下标ImageSpan图片int文字开始的下标end文字结束的下标flags决定开始和结束下标是否包含下标 SPAN_INCLUSIVE_EXCLUSIVE包括开始不包括结束SPAN_EXCLUSIVE_INCLUSIVE不包括开始包括结束SPAN_INCLUSIVE_INCLUSIVE包括开始包括结束SPAN_EXCLUSIVE_EXCLUSIVE不包括开始不包括结束 各种Span ForegroundColorSpan 修改前景色 -- 文字颜色 SpannableString spannableString new SpannableString(xxxxxx);ForegroundColorSpan foregroundColorSpan new ForegroundColorSpan(Color.GREEN);spannableString.setSpan(foregroundColorSpan, 3,6,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);mTv.setText(spannableString); BackgroudColorSpan 修改背景色 SpannableString spannableString new SpannableString(xxxxxx);BackgroudColorSpan backgroudColorSpan new ForegroundColorSpan(Color.GREEN);spannableString.setSpan(backgroudColorSpan, 3,6,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);mTv.setText(spannableString); ClickableSpan 设置文字点击事件
SpannableString spannableString new SpannableString(xxx可点击);
ClickableSpan clickableSpan new ClickableSpan() {Overridepublic void onClick(View widget) {Toast.makeText(MainActivity.this, 点击可点击按钮, Toast.LENGTH_SHORT).show();}Overridepublic void updateDrawState(TextPaint ds) {ds.setUnderlineText(false);}
};
spannableString.setSpan(clickableSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setMovementMethod(LinkMovementMethod.getInstance());
mTv.setText(spannableString); URLSpan 超链接 (继承于ClickableSpan点击实现跳转到浏览器)
SpannableString spannableString new SpannableString(xxxxxxx);
URLSpan urlSpan new URLSpan(https://www.baidu.com);
spannableString.setSpan(urlSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setMovementMethod(LinkMovementMethod.getInstance());
mTv.setText(spannableString); RelativeSizeSpan 字体的相对大小
SpannableString spannableString new SpannableString(xxxxxx);
RelativeSizeSpan relativeSizeSpan new RelativeSizeSpan(1.5f);
spannableString.setSpan(relativeSizeSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); AbsoluteSizeSpan 字体的绝对大小 (true表示单位为dip若为false则表示px)
SpannableString spannableString new SpannableString(xxxxxx);
AbsoluteSizeSpan absoluteSizeSpan new AbsoluteSizeSpan(30, true);
spannableString.setSpan(absoluteSizeSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); ScaleXSpan 字体x轴缩放 缩放倍数
SpannableString spannableString new SpannableString(xxxxxx);
ScaleXSpan scaleXSpan new ScaleXSpan(1.5f);
spannableString.setSpan(scaleXSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); StyleSpan 文字样式如斜体、粗体
//粗体
StyleSpan boldSpan new StyleSpan(Typeface.BOLD);
//斜体
StyleSpan italicSpan new StyleSpan(Typeface.ITALIC);
//粗体斜体
StyleSpan boldItalicSpan new StyleSpan(Typeface.BOLD_ITALIC); TypefaceSpan 文字字体类型如monospace、serif和sans-serif等 TypefaceSpan monospace new TypefaceSpan(monospace);
TypefaceSpan serif new TypefaceSpan(serif);
TypefaceSpan sans_serif new TypefaceSpan(sans-serif); TextAppearanceSpan 文字外貌通过style资源设置
TextAppearanceSpan textAppearanceSpan new TextAppearanceSpan(this, android.R.style.TextAppearance_Material);UnderlineSpan 文字下划线
SpannableString spannableString new SpannableString(xxxxxx);
UnderlineSpan underlineSpan new UnderlineSpan();
spannableString.setSpan(underlineSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); StrikethroughSpan 文字删除线
SpannableString spannableString new SpannableString(xxxxxx);
StrikethroughSpan strikethroughSpan new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); SuperscriptSpan 文字上标
SpannableString spannableString new SpannableString(xxxxxx);
SuperscriptSpan superscriptSpan new SuperscriptSpan();
RelativeSizeSpan relativeSizeSpan new RelativeSizeSpan(0.8f);
spannableString.setSpan(relativeSizeSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(superscriptSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); SubscriptSpan 文字下标
SpannableString spannableString new SpannableString(xxxxxx);
SubscriptSpan subscriptSpan new SubscriptSpan();
RelativeSizeSpan relativeSizeSpan new RelativeSizeSpan(0.8f);
spannableString.setSpan(relativeSizeSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(subscriptSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString); ImageSpan 图片
SpannableString spannableString new SpannableString(xxxxxxx);
ImageSpan imageSpan new ImageSpan(this, R.drawable.ic_test);
spannableString.setSpan(imageSpan, 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTv.setText(spannableString);