本文转载(不知出处了。。。)
如果一段文字需要多个TextView拼贴,比如:“我叫XXX,今年XX岁了,身高X.X米”;
可以考虑引用string.xml文件中预定义的字符串拼接实现.
例子:
1.在string.xml中先定义好格式
<string name="hello">String.xml字符转义拼接: 我叫 %1$s,今年 %2$d岁了,身高 %3$f米。</string>
2.代码中这样实现
TextView tv=(TextView)findViewById(R.id.textView);
String format = getResources().getString(R.string.hello);
String result= String.format(format , "Android" , 5 , 2.46 );//对应xml中定义的123顺序
Log.e("", result);
tv.setText(result);
----------
输出结果如下:
String.xml字符转义拼接: 我叫 Android,今年 5岁了,身高 2.460000米.
--------------------------------------------------
特别注意:
在string.xml中无法直接写成 %d,%s,%f 等这类格式化符号,必须在中间加个转义符"$",而不是平时常用的转义符"\"
---新增,网上找的---
如何在<string></string>中使用%号:
有两个办法可供选择
1.用%%来表示1个%,和转意符号 \ 的用法相同.(但我经我测试发现无效,编译不报错,但输出结果是两个%)
2.如果你的字符串不需要格式化,可以在你的<string 标签上增加一个属性:formatted="false"例如 <string name="test" formatted="false">% test %</string> 即可.
--------------------------------------------------------------------------------------
另外附送一些搜到的特殊转义符:
XML转义字符
以下为XML标志符的数字和字符串转义符
" (" 或 ")
' (' 或 ')
& (& 或 &)
lt(<) (< 或 <)
gt(>) (> 或 >)
下面的字符在 [XML]中被定义为 空白(whitespace)字符:
空格 ( )
Tab (	)
回车 (
)
换行 (
)