TextView.setText() 遇到的问题

影子:

在开发中我们经常会在代码中去设置TextView的文本。
  • 在AS中你可能会遇到这样一个警告:Do not concatenate text displayed with setText. Use resource string with placeholders. (Ctrl + F1)
  • 有道译文:不要将显示的文本与setText连接。使用带有占位符的资源字符串。在调用TextView.setText 时,不要调用Number.toString()来格式化数字;它不会正确处理分数分隔符和特定于区域的数字。考虑使用格式规范(%d或%f)的字符串#格式。不要传递字符串字面意思。“你好”)来显示文本。硬编码的文本不能正确地翻译成其他语言。可以考虑使用Android资源字符串。*不要通过连接文本块来构建消息。(译文可能有误差,请忽略掉)
    警告原因AS已经说的很清楚了,现在我们看看如何解决。

解决格式规范(%d或%f)的字符串

常见格式的类似有:
  • %n$s—>n表示目前是第几个参数 (比如%1$s中的1代表第一个参数),s代表字符串
  • %n$d—>n表示目前是第几个参数 (比如%1$d中的1代表第一个参数),d代表整数
  • %n$f—>n表示目前是第几个参数 (比如%1$f中的1代表第一个参数),f代表浮点数

使用案列:
tv_Message.setText(String.format(getString(R.string.s_Message),1));
R.string.s_Message 内容:
<string name="s_Message ">这是第%d条消息</string>

好了,使用这种规范格式输出,恭喜你绿了不黄了。
妈妈再也不怕我是处女座了。
–2018/6/19
遇到类似<string name="s_Message ">进度为%d %</string>这种格式的字符串时,需要把%写成%%。
String.format() 中单个%是会报错的,需要显示单个%时,用两个%代替。
<string name="s_Message ">进度为%d %%</string>

    原文作者:奈蜇
    原文地址: https://www.jianshu.com/p/da9ecaaf7d8b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞