Android TextView 设置文字背景色或文字颜色,字体阴影,字体样式

   //第一个字符变色String copiesStr_notic = tv_notic.getText().toString().trim();SpannableString spannableString2 =new SpannableString(copiesStr_notic);//0 第一行缩进像素 , SizeUtils.dp2px(15)非第一行缩进像素Paint mPaint=new Paint();float w=mPaint.measureText(copiesStr_notic.charAt(0)+"");LeadingMarginSpan.Standard what2 =new LeadingMarginSpan.Standard(0,AppUtils.dp2Px(context,w));spannableString2.setSpan(what2, 0, spannableString2.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);//改变模糊查询的字体颜色SpannableStringBuilder builder_notic = new SpannableStringBuilder(spannableString2);//ForegroundColorSpan 为文字前景色,BackgroundColorSpan为文字背景色ForegroundColorSpan yellowSpan_notic = new ForegroundColorSpan(Color.parseColor("#FA9E5C"));builder_notic.setSpan(yellowSpan_notic, 0,1, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//        tv_notic.setText(builder_notic);

 

 

      String str="这是设置TextView部分文字背景颜色和前景颜色的demo!";

        int bstart=str.indexOf("背景");

        int bend=bstart+"背景".length();

        int fstart=str.indexOf("前景");

        int fend=fstart+"前景".length();

        SpannableStringBuilder style=new SpannableStringBuilder(str);

        style.setSpan(new BackgroundColorSpan(Color.RED),bstart,bend,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  

        style.setSpan(new ForegroundColorSpan(Color.RED),fstart,fend,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

        TextView tvColor=(TextView) findViewById(R.id.tv_color);

        tvColor.setText(style);

动态TextView文本内容:

<string name="str_text1">上期抄表%1$s度,本期抄表%2$s度</string>
textView1.setText(getResources().getString(R.string.str_text1,120+"",200+""));

  private void setSpann(){//1ForegroundColorSpan 文本颜色(前景色)SpannableString spannableString = new SpannableString("我是一个无聊的文本,啦啦啦啦啦啦");ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#0099EE"));spannableString.setSpan(colorSpan, 9, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n1");textView3.setText(spannableString);//2BackgroundColorSpan 背景色spannableString.setSpan(new BackgroundColorSpan(Color.parseColor("#0099EE")), 6, spannableString.length(), spannableString.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n2");textView3.append(spannableString);// 3. ClickableSpan: 点击事件相关的Span。ClickableSpan clickableSpan = new ClickableSpan() {@Overridepublic void onClick(View widget) {Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();Log.e("Easy", "click");}};spannableString.setSpan(clickableSpan, 7, 11, Spannable.SPAN_INCLUSIVE_INCLUSIVE) ;textView3.setMovementMethod(LinkMovementMethod.getInstance());textView3.append("\n3");textView3.append(spannableString);//4MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)int length = spannableString.length();//模糊(BlurMaskFilter)MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, BlurMaskFilter.Blur.OUTER));spannableString.setSpan(maskFilterSpan, 0, length - 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//浮雕(EmbossMaskFilter)maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));spannableString.setSpan(maskFilterSpan, length - 10, length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n4");textView3.append(spannableString);//   5、MetricAffectingSpan 父类,一般不用//  RasterizerSpan 光栅效果
//        spannableString.setSpan(new RasterizerSpan(), 0, 7, Spannable.
//                SPAN_INCLUSIVE_EXCLUSIVE);
//        textView3.append("\n");
//        textView3.append(spannableString);// 7StrikethroughSpan 删除线(中划线)spannableString.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n7");textView3.append(spannableString);//        8、SuggestionSpan
//        相当于占位符,一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。
//        PS:API 14新增,暂无示例。//9UnderlineSpan 下划线spannableString.setSpan(new UnderlineSpan(), 0, spannableString.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n9");textView3.append(spannableString);// 10AbsoluteSizeSpan 绝对大小(文本字体)spannableString.setSpan(new AbsoluteSizeSpan(20, true), 0, 7,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n10");textView3.append(spannableString);//   11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。DynamicDrawableSpan drawableSpan =new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {@Overridepublic Drawable getDrawable() {Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);d.setBounds(0, 0, 50, 50);return d;}};DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BOTTOM) {@Overridepublic Drawable getDrawable() {Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);d.setBounds(0, 0, 50, 50);return d;}};spannableString.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);spannableString.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n11");textView3.append(spannableString);// 12ImageSpan 图片Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);d.setBounds(0, 0, 50, 50);spannableString.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n12");textView3.append(spannableString);//13、RelativeSizeSpan 相对大小(文本字体)//参数proportion:比例大小spannableString.setSpan(new RelativeSizeSpan(2.5f), 3, 4,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n13");textView3.append(spannableString);// 14、ReplacementSpan 父类,一般不用// 15、ScaleXSpan 基于x轴缩放// 参数proportion:比例大小spannableString.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n15");textView3.append(spannableString);// 16、StyleSpan 字体样式:粗体、斜体等//Typeface.BOLD_ITALIC:粗体+斜体spannableString.setSpan(new StyleSpan(Typeface.BOLD), 3, 7,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n16");textView3.append(spannableString);// 17、SubscriptSpan 下标(数学公式会用到)spannableString.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n17");textView3.append(spannableString);// 18、SuperscriptSpan 上标(数学公式会用到)spannableString.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n18");textView3.append(spannableString);// 19、TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)//若需自定义TextAppearance,可以在系统样式上进行修改spannableString.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n19");textView3.append(spannableString);// 20、TypefaceSpan 文本字体//若需使用自定义字体,可能要重写类TypefaceSpanspannableString.setSpan(new TypefaceSpan("monospace"), 3, 10,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.append("\n20");textView3.append(spannableString);//  21、URLSpan 文本超链接spannableString.setSpan(new URLSpan("http://orgcent.com"), 10, spannableString.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);textView3.setMovementMethod(new LinkMovementMethod());textView3.append("\n21");textView3.append(spannableString);//让URLSpan可以点击}

部分字体着色

代码:

String sms = "审计系统在线";
String sjs = "审计系统在线";
int fstart = 4;
int fend = 6;
if (sms.contains("在线")) {SpannableStringBuilder style = new SpannableStringBuilder(sms);style.setSpan(new ForegroundColorSpan(Color.rgb(166, 116, 50)), fstart, fend, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);nethomesmstatus.setText(style);
} else {nethomesmstatus.setText(sms);
}

效果:

字体阴影

textView.setShadowLayer(2,6,20,R.color.colorPrimary);//清晰度,偏移量,最后一个无效参数

字体样式

字体类型
Typeface.DEFAULT:默认字体,常规字体类型
Typeface.DEFAULT_BOLD:黑体字体类型
Typeface.MONOSPACE:等宽字体类型
Typeface.SANS_SERIF:sans serif字体类型
字体样式
Typeface.BOLD //粗体
Typeface.BOLD_ITALIC //粗斜体
Typeface.ITALIC //斜体
Typeface.NORMAL //常规
 

textView.setTypeface(Typeface.DEFAULT, Typeface.BOLD_ITALIC );

 //下划线 

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG );

//抗锯齿

textView.getPaint().setAntiAlias(true);

//中划线
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG); 

// 设置中划线并加清晰 
textview.setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);  

holder.odlte.setPaintFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);

//字体加粗

textView.getPaint().setFakeBoldText(true);
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众号 和 微信小程序 用户数据互通 通过微信开放平台的UnionID机制

很多时候&#xff0c;需要将多个公众号和小程序的用户数据打通&#xff0c;我们需要做的&#xff0c;就是将这些公众号和小程序都绑定到同一个微信开发平台上&#xff0c;那么我们就可以获取到UnionID了。其实数据就已经打通了。 UnionID机制说明&#xff1a; 如果开发者拥有…

LR 安装与破解

LoadRunner 11 安装及破解 注意事项&#xff1a; 安装前&#xff0c;把所有的杀毒软件和防火墙关闭。 若以前安装过LoadRunner,则将其卸载。 安装路径不要带中文字符。 如果系统为WIN7&#xff0c;旗舰版才能安装。 安装完毕&#xff0c;需破解。 一&#xff0e; 下载 在HP的官…

从零开始学习springBoot2

简单修改一下: 创建一个包com.kfit.test.web&#xff0c;新建类HelloController 修改 运行访问http://127.0.0.1:8080/得到相同的结果 转载于:https://www.cnblogs.com/zhengzhouyang/p/7680482.html

如何调整压力测试工具

如何调整压力测试工具 如何调整压力测试工具 您是否曾经不得不对应用程序进行压力测试&#xff0c;而最后却发现不明白结果表明什么意义?也许问题不是出在应用程序上。也许问题出在配置压力测试工具的方式上。如果您曾经经历过这种情况&#xff0c;或者正要进行压力测试&#…

未获取root手机抓包方法

没有root的android不能使用类似shark的APP抓包&#xff0c;以下两个不root抓包的方法供参考 未获取root的Android手机抓包方法1&#xff1a;连接PC开启的WIFI PC开启WIFI热点共享&#xff0c;然后手机连接到此虚拟WIFI&#xff0c;pc上使用wireshark选择对应网卡抓包。 win7以上…

栈的应用--迷宫问题

问题描述&#xff1a;给定一个迷宫&#xff0c;给定入口和出口&#xff0c;找到从入口到出口的一条路径(任何一条路径都可以)&#xff0c;迷宫为0表示可走&#xff0c;为1表示墙。用1将迷宫围起来避免边界问题。 实现思路&#xff1a;1.DFS搜索&#xff08;递归&#xff09; 2.…

常用的方法论-PARR

转载于:https://www.cnblogs.com/qjm201000/p/7687470.html

修改wireshark协议解析规则

不同的协议有不同的解码器,wireshark尝试为每个包尝试找到正确的解码器,特定的情况有可能会选择错误的解码器。 1.使用了其它协议的标准端口&#xff0c;被错误解码&#xff0c;使用udp的80端口发送数据被当作QUIC协议解析。 wireshark菜单“Analyze–>Enabled Protocols…”…

Fiddler过滤指定域名

Fiddler过滤指定域名的方法一 切换到fiddler右侧窗口的Filters选项卡&#xff0c;勾选顶部的“Use Filters”&#xff0c;找到Hosts区域&#xff0c;设置以下三个选项&#xff1a; 1.第一项有三个选项&#xff0c;不做更改&#xff1a; “No zone filter” “Show Only Intrane…