使用String.format和CDATA实现一个常见的效果

本文介绍了一种使用String.format和CDATA动态格式化XML字符串资源的方法,以改变特定位置的字符样式,如颜色和字体大小,避免了使用Spannable的不便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:
效果图
一个字符串中某些字符改变颜色或者字体大小的需求,之前一直使用Spannable处理,碰到这个发现如果使用Spannable就有点不方便了;这里使用了String.format来动态格式化String资源,使用CDATA来控制特定位置的样式;具体代码如下:

String.xml:

<resources>
    <string name="app_name">Test</string>
    <string name="content">本月应发工资:<![CDATA[<font color="#ff0000">%1$d</font>]]> 实发工资:<![CDATA[<font color="#ff0000">%2$d</font>]]>元(包含奖金<![CDATA[<font color="#ff0000">%3$d</font>]]>元)</string>
</resources>

MainActivity:

package com.example.administrator.test;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        tv.setText(Html.fromHtml(String.format(getResources().getString(R.string.content),10,20,10)));
    }
}
  • String.format 格式化对应的转换符如下表
转换符说明
%s字符串类型
%c字符类型
%b布尔类型
%d整数类型(十进制)
%x整数类型(十六进制)
%o整数类型(八进制)
%f浮点类型
%a十六进制浮点类型
%e指数类型
%g通用浮点类型(f和e类型中较短的)
%h散列码
%%百分比类型
%n换行符
%tx日期与时间类型(x代表不同的日期与时间转换符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值