修改字符串字体颜色

方法1:

<font color="#FFFF00">Type-C 3.0</font>

方法2:



SpannableStringBuilder style=new SpannableStringBuilder(str); 

//SpannableStringBuilder实现CharSequence接口 
//每次new 一个ForegroundColorSpan对象才生效
style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); 

style.setSpan(new ForegroundColorSpan(Color.YELLOW), 2, 4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); 

style.setSpan(new ForegroundColorSpan(Color.GREEN), 4, 6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); 

tv.setText(style);//将其添加到tv中

    SpannableString spannableString = new SpannableString(typecTip);
    ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
    spannableString.setSpan(colorSpan, 5, 15, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    //设置了5~15的颜色
    //spannableString.setSpan(colorSpan, 26, 36, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    //设置了26~36的颜色,发现只有这个生效,前面的5~15没生效,所以通过UnderlineSpan进行设置
    spannableString.setSpan(new UnderlineSpan() {
               @Override
               public void updateDrawState(TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setColor(Color.RED);//设置颜色
                    ds.setUnderlineText(false);//去掉下划线
                }
            }, 26, 36, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    device_info.setText(spannableString);
    //注意,如果从子线程将spannableString传递过来设置不生效,需要在主线程进行SpannableString格式设置

参考:SpannableString的ForegroundColorSpan设置字体颜色不生效的问题-优快云博客

在Shell脚本中使用ANSI转义序列无法更改字符串字体颜色,可从以下几个方面排查并解决: ### 转义序列是否正确 ANSI转义序列有特定的格式,若格式错误则无法正常显示颜色。常见的设置前景色的转义序列是`\33[30m - \33[37m` ,设置背景色的是`\33[40m - \33[47m` 。要保证转义序列书写无误,并且在使用时遵循正确的语法。例如,要设置黄色文本,正确的转义序列是`\033[33m` ,颜色重置为`\033[0m` 。以下是正确示例代码: ```bash #!/bin/bash YELLOW='\033[33m' NC='\033[0m' echo -e "$YELLOW这是黄色文本$NC" ``` 这里使用`echo -e` 命令,`-e` 选项用于启用对反斜杠转义符的解释。若不使用`-e` 选项,转义序列会被当作普通字符串输出,无法实现颜色更改 [^2][^4]。 ### 终端是否支持 不同终端对ANSI转义序列的支持情况存在差异。部分老旧或特殊配置的终端可能不支持某些颜色模式,如256色模式或RGB真彩色模式。可先确认终端是否支持基本的8/16色模式。若终端仅支持基本颜色,使用更高级的颜色模式就会失效。可通过以下代码测试基本颜色支持: ```bash #!/bin/bash for i in {30..37}; do echo -e "\033[${i}m这是颜色代码 $i 的文本\033[0m" done ``` 若所有颜色都能正常显示,说明终端支持基本颜色;若部分或全部颜色显示异常,则表明终端不支持或配置有问题 [^1]。 ### 环境变量影响 环境变量可能会影响ANSI转义序列的显示。例如,`TERM` 环境变量指定了终端类型,若其值设置错误,可能导致终端无法正确解释转义序列。可使用`echo $TERM` 查看当前`TERM` 变量的值,常见的支持ANSI转义序列的值有`xterm` 、`xterm-256color` 等。若值异常,可使用`export TERM=xterm-256color` 临时修改,或在`.bashrc` 或`.zshrc` 文件中永久修改 [^1]。 ### 兼容性问题 在不同的操作系统和Shell环境中,ANSI转义序列的兼容性会有所不同。某些系统可能需要特定的设置或额外的库来支持。例如,在Windows的命令提示符中,默认不支持ANSI转义序列,可使用Windows Terminal来替代,它对ANSI转义序列有较好的支持 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值