Android XML百分比符号

我有一个字符串数组,其中使用了%符号。 使用%的正确格式是%.当我在该阵列中有一个带有多个%的字符串时,它会给我这个错误。

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

zaid asked 2019-02-14T12:24:04Z

14个解决方案

424 votes

Android资产包装工具(Formatter)在其最新版本中变得非常严格,现在用于所有Android版本。 生成的aapt-error是因为它不再允许非位置格式说明符而生成的。

以下是一些如何在资源字符串中包含%-symbol的想法。

如果您的字符串中不需要任何格式说明符或替换,则只需使用Formatter属性并将其设置为false:

%a + %a == 2%a

在这种情况下,字符串不会用作Formatter的格式字符串,因此您不必转义%-symbols。 结果字符串是“%a +%a == 2%a”。

如果省略Formatter属性,则该字符串将用作格式字符串,您必须转义%-symbols。 这是用double-%正确完成的:

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

现在Formatter给你没有错误但是根据你如何使用它,如果在没有任何格式参数的情况下调用Formatter,结果字符串可以是“%% a + %% a == 2 %% a”:

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和代码,很难说出你的问题到底是什么,但希望这有助于你更好地理解机制。

Josef Pfleger answered 2019-02-14T12:25:01Z

150 votes

要允许应用程序使用来自资源的格式化字符串,您应该更正xml。 所以,例如

Your App name, ver.%d

应该换成

Your App name, ver.%1$d

你可以看到这个细节。

Paul E. answered 2019-02-14T12:25:42Z

47 votes

您可以使用%%转义%for XML解析器,但它在设备中显示两次。

要显示一次,请尝试以下格式:\%%

例如

Fat Burning (50\%% to 60\%%)

显示为Fat Burning (50% to 60%)在设备中

pavblazek answered 2019-02-14T12:26:31Z

26 votes

使用

String.format()

要得到

String.format()作为格式化字符串。

我正在使用String.format()方法来插入数字,而不是%d。

ViliusK answered 2019-02-14T12:27:19Z

9 votes

在strings.xml文件中,您可以使用任何所需的Unicode符号。

例如,百分号的Unicode编号为0025:

%

您可以在此处查看完整的Unicode标志列表

Asaf Pinhassi answered 2019-02-14T12:28:01Z

7 votes

不完全是你的问题,但类似的问题。

如果您的字符串条目中有多个格式,则不应多次使用“%s”。

别 :

Planned time %s - %s (%s)

做:

Planned time %1$s - %2$s (%3$s)

Garytech answered 2019-02-14T12:28:53Z

5 votes

您可以使用%%转义xml中的%,但是您需要在代码中设置文本,而不是在布局xml中设置。

Mee answered 2019-02-14T12:29:24Z

5 votes

这可能是IDE变得过于严格的情况。

这个想法很合理,一般来说你应该指定替换变量的顺序,这样如果你为另一种语言添加资源,你的java代码就不需要改变了。 但是这有两个问题:

首先,字符串如:

You will need %.5G %s

使用,你将需要2.1200毫克将使任何语言的顺序相同,因为质量总是科学地按顺序表示。

第二个是如果你把变量的顺序放在你的默认资源(例如英语)的任何语言中,那么你只需要在语言的资源字符串中指定使用与默认语言不同的顺序的位置。

好消息是这很容易解决。 尽管不需要指定位置,并且IDE过于严格,但无论如何都要指定它们。 对于上面的例子,使用:

你将需要%1 $ .5G%2 $ s

Steve Waring answered 2019-02-14T12:30:41Z

5 votes

要逃避百分比符号,你只需要%%

例如 :

String.format("%1$d%%", 10)

返回“10%”

landerlyoung answered 2019-02-14T12:31:28Z

3 votes

试试这个(右):

Great application %s ☞ %s ☞ %s \\n\\nGo to download this application %s

sonida answered 2019-02-14T12:31:59Z

3 votes

一个棘手的方法:使用如下的小百分号

Fat Burning (50﹪ to 60﹪)

维基百科上的百分号

Bao Le answered 2019-02-14T12:32:36Z

1 votes

根据谷歌官方文档,使用%1 $ s和%2 $ s [http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling]

你好,%1 $ s! 你有%2 $ d个新消息。

techtinkerer answered 2019-02-14T12:33:14Z

-1 votes

假设您要显示(50%折扣)并在运行时输入50。 这是代码:

(

%1$s

%2$s

OFF)

在java类中使用以下代码:

String formattedString=String.format(context.getString(R.string.format_discount),discountString,"%");

holder1.mTextViewDiscount.setText(formattedString);

Harish Rana answered 2019-02-14T12:33:51Z

-14 votes

尝试在它前面使用反斜杠,如下所示:

\%

lolraccoon answered 2019-02-14T12:34:19Z

android 百分号,Android XML百分比符号相关推荐

  1. android xml 未能解析文件,Android Studio提示“无法解析符号”,但项目已编译

    我在build.gradle中使用以下内容在AndroidStudio中导入twitter4j: dependencies { compile 'com.android.support:support ...

  2. android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget

    错误 android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget 详细错误 Compiling with JDK Java compiler API. D:\A ...

  3. Android开发,XML文件注释方法

    android在很多地方都采用XML文件进行配置工程相关参数,如布局,这点类似于Qt. 一.注释方法. android的XML文件注释的方法一般如下: <!-- 注释内容 --> < ...

  4. Android 机型适配之百分比适配 ConstraintLayout

    Android 机型适配之百分比适配 ConstraintLayout 由于Android的品类繁杂,机型适配向来是一个难题,常见的通过LinearLayout+RelativeLayout的方式进行 ...

  5. android studio val,导入--Android Studio突然无法解析符号

    导入--Android Studio突然无法解析符号 Android Studio 0.4.2工作正常,今天我打开它,几乎所有东西都是红色,自动完成已停止工作. 我看看导入和AS似乎告诉我它突然找不到 ...

  6. Android开发历程_18(XML文件解析)

    前言  本文主要介绍在Android中怎样来解析XML文件.主要采用的是SAX机制,SAX全称为Simple API for XML,它既是一种接口,也是一个软件包.作为接口,SAX是事件驱动型XML ...

  7. Android 如何在xmL 里面动态设置padding

    如题,Android 如何在xmL 里面动态设置padding 有时候,你的布局加载完成之后,你findViewByid 找到控件,设置padding 会导致白条,布局闪动,那怎么办呢? 你是不是就想 ...

  8. Android之 AndroidManifest.xml 文件解析

    一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...

  9. Android之 AndroidManifest xml 文件解析

    一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...

最新文章

  1. 旷视MegEngine核心技术升级
  2. 使用rpmbuild对ceph的源码包进行重新打包
  3. 高分文章精选 | 纳米孔宏基因组测序的表现
  4. 调试你的Python代码
  5. .Net Core 2.1 通用主机(Core 在控制台应用程序中的应用)
  6. 计算机设备故障类型有哪些,计算机硬件故障有哪些
  7. 云计算仿真框架CloudSim介绍
  8. python绘制拟合回归散点图_python – 将曲线拟合到散点图的边界
  9. Drupal 修复远程代码执行漏洞
  10. ExpandListView onChildClickListener 失效
  11. 【Linux 命令学习第一天
  12. python基础--函数作用域
  13. MooTools 1.4 源码分析 - Fx
  14. 微信小程序SEO优化策略
  15. Hash和红黑树以及其在C#中的应用
  16. springboot+调用支付宝第三方接口(沙箱环境)
  17. 新手预算2000元左右买什么吉他好?高性价比单板民谣吉他推荐
  18. 咸鱼Micropython— 标准库
  19. php zip解压,php解压缩zip和rar压缩包文件
  20. 如何使用Mac的媒体键在DisplayPort,HDMI或Thunderbolt监视器上调整扬声器音量

热门文章

  1. Linux下后台服务器开发_基于多线程的一对一QQ聊天室
  2. [JVM]了断局: 说什么也没用,背就完了[必背]
  3. 内存的分配和回收实验(首次适配、下次适配、最佳适配、最坏适配)
  4. 【C++】算法集锦(1):八大排序算法 :GIF + 亲测代码 +专项练习平台
  5. flutter video_thumbnail #获取视频封面
  6. Array.reduce()的用法与进阶
  7. ug908中文文档获取方式 | Xilinx
  8. 机器学习--逻辑回归模型(Logistic Regression)
  9. 以色列MIMIC(Medical Information Mart for Intensive Care)数据库简介
  10. el-table自定义排序