Android XML Percent Symbol(百分符号)

11 浏览
0 Comments

Android XML Percent Symbol(百分符号)

我有一个字符串数组,其中使用了 % 符号。使用 % 的正确格式应该是 %。如果我在该数组中有一个包含多个 % 的字符串,它会给我一个错误。

 Multiple annotations found at this
 line:
 - error: Multiple substitutions specified in non-positional format;
   did you mean to add the formatted="false" attribute?
 - error: Found tag  where  is expected

admin 更改状态以发布 2023年5月22日
0
0 Comments

为了让应用程序使用来自资源的格式化字符串,您应该更正您的xml。 例如,

Your App name, ver.%d

应该被替换为

Your App name, ver.%1$d

您可以点击这里查看详细信息。

0
0 Comments

Android资源打包工具 (aapt) 在最新版本中变得非常严格,现在适用于所有Android版本。你收到的 aapt 错误是由于它不再允许 非定位格式说明符

以下是一些关于如何在资源字符串中包含 %-符号的方法。

如果你的字符串中不需要任何格式说明符或替换,你可以简单地使用 formatted 属性,并将其设置为 false

%a + %a == 2%a

在这种情况下,该字符串不作为 Formatter 的格式字符串使用,因此你不必转义 %- 符号。得到的字符串是 "%a + %a == 2%a"。

如果你省略 formatted="false" 属性,则该字符串被用作格式字符串,你必须用双重百分号进行转义:

%%a + %%a == 2%%a

现在,aapt 没有错误了,但是根据你如何使用它,结果字符串可能是 "%%a + %%a == 2%%a",如果在调用 Formatter 时没有任何格式参数:

Resources res = context.getResources();
String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"
String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"

没有xml和代码的情况下,很难说你的问题是什么,但是希望这能帮助你更好地理解机制。

0