Android通过String.format格式化(动态改变)字符串资源的显示内容
2014-09-15 10:49
537 查看
一、实现效果:
最近在项目中需要做类似于上图显示的效果,里面的数字和称谓是动态获取的,对于这种显示效果,有如下两种解决方案来处理:
(1)通过代码动态设置TextView的内容,比如:
(2)在string.xml文件中定义一个字符串,然后在代码中通过String.format方法来格式化该字符串,比如:
二、字符串资源格式化详细介绍:
%+参数位置+$+格式化类型,其中:
参 数 位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;
格式化类型:
s 字符串
f 浮点数
d 整型数
c 字符类型
其实懂点C语言的朋友一看就知道和printf的打印输出格式化差不多。
三、注意事项:
1、在string.xml文件中定义好格式化的字符串资源,通过代码动态设置字符串内容时,必须确保String.format方法里面的参数不少于字符串资源中定义的格式化参数个数(实践证明多了参数是不会报异常的),比如在上面的例子中字符串有四个格式化参数,如果代码写成这样:
四、参考资料:
1、修改Android中strings.xml文件, 动态改变数据
2、android String 资源 你所不知道的
最近在项目中需要做类似于上图显示的效果,里面的数字和称谓是动态获取的,对于这种显示效果,有如下两种解决方案来处理:
(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方法来格式化该字符串,比如:
<string name="today_state_string">您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!</string>在代码中做如下定义:
/** * 显示今日状态 * * */ 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 ); }本文介绍第二种处理方式,因为显然第二种处理方式更方便,特别是需要动态改变多个显示状态的时候。
二、字符串资源格式化详细介绍:
<string name="today_state_string">您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!</string>从上面这行字符串的定义可以看出,格式化字符串资源的格式为:
%+参数位置+$+格式化类型,其中:
参 数 位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;
格式化类型:
s 字符串
f 浮点数
d 整型数
c 字符类型
其实懂点C语言的朋友一看就知道和printf的打印输出格式化差不多。
三、注意事项:
1、在string.xml文件中定义好格式化的字符串资源,通过代码动态设置字符串内容时,必须确保String.format方法里面的参数不少于字符串资源中定义的格式化参数个数(实践证明多了参数是不会报异常的),比如在上面的例子中字符串有四个格式化参数,如果代码写成这样:
showTodayState( int totalUser, float upRate, String hornor )//少了level参数则会报如下异常:
四、参考资料:
1、修改Android中strings.xml文件, 动态改变数据
2、android String 资源 你所不知道的
相关文章推荐
- Android通过String.format格式化(动态改变)字符串资源的显示内容
- Android 根据Edittext内容动态改变Listview显示的数据
- android 通过占位符来动态获得字符串资源
- wpf datagrid 单元格颜色 根据条件改变颜色 根据表datatable动态显示datagrid内容
- 通过字段名称动态获取资源的id(将Android工程做成jar包和资源文件)
- android 字符串string资源的动态处理
- android通过拼写字符串获取资源文件
- Android动态显示隐藏密码输入框的内容
- Android 通过字符串来获取R下面资源的ID 值
- Android-通过URL获取网络资源 Json 字符串
- 学习笔记-Android之ListView随EditText输入内容动态改变
- Android 字符串资源中定义显示样式
- Android动态显示隐藏密码输入框的内容
- Android通过iChartJs实现动态图表、报表的显示Demo
- 通过占位符来动态获得字符串资源
- Android 通过字符串来获取R下面资源的ID 值
- Flex中如何通过rowCount属性,动态改变DataGrid显示行数
- 【Android】实现动态显示隐藏密码输入框的内容
- android 通过滚动条改变图片显示
- Android 通过字符串来获取R下面资源的ID 值 文字资源