3

android:minSdkVersion="8"我正在使用和创建一个应用程序(默认语言不是 EN)android:targetSdkVersion="15"

我有我的image.png内心drawable-mdpi

由于我现在支持英语,因此我创建了一个values-en-rUS文件夹,其中包含一个strings.xml包含字符串翻译的文件。

现在,如果我运行我的应用程序并将设备语言更改为英语(美国),则会显示翻译后的字符串,并且应用程序按预期工作。

因为我想要一个不同的图像,所以应用程序用英文显示,我drawable-en-rUS-mdpiimage.png里面创建了文件夹。现在,我以“英文模式”运行应用程序,它应该加载图像,drawable-en-rUS-mdpi但事实并非如此。

如果我使用文件资源管理器并可视化应用程序,我可以看到drawable-en-US-mdpi创建了一个文件夹并且图像在里面。

我做错什么了吗?

4

1 回答 1

2

从我的阅读来看,您的问题似乎与我的相同(在区域设置更改时使用本地化资源刷新图像)。

我的代码(简化)是这样的:

ImageView flag = (ImageView) findViewById(R.id.flagImage);
flag.setImageResource(R.id.flagImage);

在阅读并尝试了 invalidate() 和 refreshDrawableState() 以及其他一些恶作剧之后,我发现另一个线程ImageView 没有刷新/反映我的问题的解决方案(此处此处)。

似乎,如果您不更改正在绘制的图像的 resID 或 URI,即使其他可能起作用的因素发生了变化(例如语言环境),ImageView 本身也不会更新。我的问题的解决方案是添加一条为 ImageView 设置null可绘制对象的行:

ImageView flag = (ImageView) findViewById(R.id.flagImage);
flag.setImageDrawable(null);   //This will force the image to properly refresh
flag.setImageResource(R.drawable.flag);
于 2013-03-17T14:21:22.307 回答