android string.format()长度,Android通过String.format格式化(动态改变)字符串资源的显示内容...

一、实现效果:

b610100277e5446d92766d17dd3e993f.bmp

最近在项目中需要做类似于上图显示的效果,里面的数字和称谓是动态获取的,对于这种显示效果,有如下两种解决方案来处理:

(1)通过代码动态设置TextView的内容,比如:

/**

* 显示今日状态

*

* */

private void showTodayState( int totalUser, float upRate, String hornor, char level ){

StringBuilder todayStateStr = new StringBuilder( );

todayStateStr.append( "您正与" );

todayStateStr.append( totalUser );

todayStateStr.append( "位朋友在一起游戏,本周排名提升了" );

todayStateStr.append( upRate );

todayStateStr.append( ",获得" );

todayStateStr.append( hornor );

todayStateStr.append( "的称号,等级为" );

todayStateStr.append( level );

todayStateStr.append( "!" );

mTodayStateTxt.setText( todayStateStr );

}然后调用该方法:

showTodayState( 1234567, 68.376f, "爆头大师", 'B' );(2)在string.xml文件中定义一个字符串,然后在代码中通过String.format方法来格式化该字符串,比如:

您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!在代码中做如下定义:

/**

* 显示今日状态

*

* */

private void showTodayState( int totalUser, float upRate, String hornor, char level ){

String todayStateStr = String.format( getResources( ).getString( R.string.today_state_string), totalUser, upRate, hornor, level );

mTodayStateTxt.setText( todayStateStr );

}本文介绍第二种处理方式,因为显然第二种处理方式更方便,特别是需要动态改变多个显示状态的时候。

二、字符串资源格式化详细介绍:

您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!从上面这行字符串的定义可以看出,格式化字符串资源的格式为:

%+参数位置+$+格式化类型,其中:

参 数  位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;

格式化类型:

s 字符串

f 浮点数

d 整型数

c 字符类型

其实懂点C语言的朋友一看就知道和printf的打印输出格式化差不多。

三、注意事项:

1、在string.xml文件中定义好格式化的字符串资源,通过代码动态设置字符串内容时,必须确保String.format方法里面的参数不少于字符串资源中定义的格式化参数个数(实践证明多了参数是不会报异常的),比如在上面的例子中字符串有四个格式化参数,如果代码写成这样:

showTodayState( int totalUser, float upRate, String hornor )//少了level参数则会报如下异常:

9a7f4d432e8e65a999fab0a180bbb6b9.bmp

四、参考资料:

原文:http://blog.csdn.net/ekeuy/article/details/39289367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值