当locale为en_IN时,从drawable-en-rCA中选择Android drawable

时间:2017-10-05 22:46:36

标签: android localization locale drawable android-resources

我在drawable-en-rCA文件夹中有一个图像。我没有像drawable-en-rIN或drawable-in这样的文件夹。当我将我的应用程序区域设置更改为en_IN时,drawable从drawable-en-rCA中获取,而预期从默认的drawable文件夹中获取,因为没有特定于en_IN的drawables。

有人可以帮助我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

如果您在运行Android N或更高版本的设备上遇到此问题,我认为您的问题可能与此答案中提到的结果有关:Localization for Canada defaults to UK; should default to US。 Google发布了关于Android Improvements to Resource-Resolution Strategy帖子的文档。此问题还有一个错误报告Incorrect resource resolution strategy above Android N, defaulting to en_GB and not default strings.xml ,但事实证明这不是一个错误,而是一个功能。以下是他们的回复:

  

从Android N开始,所有英语区域设置(美国和美国地区除外,如波多黎各和美属萨摩亚)都会回归到某些国际英语版本(如果有这样的区域设置)。

     

因此对于en-CA,我们会首先尝试这些语言环境,然后再回到en-GB(如果没有更好的国际英语语言环境,它被认为是国际英语的代表):en-rCA(加拿大英语), b + en + 001(国际英语),en(英语)。如果您不希望为en-CA选择en-GB字符串,则应将资源放在这三个目录中的一个中,因为它们将被视为与en-CA更好的匹配。

对于您的情况,基于这些(特别是新的资源解析策略文档),当您选择en_IN时,如果drawable-en-rIN中没有任何资源,那么它会查找最近的国际英语目录,在你的情况下是drawable-en-rCA。如果它不存在,那么它只会默认为默认的可绘制文件夹。

希望它有所帮助。