众所周知,我们的values文件夹是根据所选语言排列的,例如value-envalue-ja
我只想检查特定的值文件夹是否存在?
例如,我想检查value-fr是否存在于res文件夹中?

最佳答案

我首先想到的是在values/localized.xml中定义布尔项(或其他一些资源文件,如strings.xml):

<resources>
    <bool name="localized">false</bool>
</resources>

然后在每个values-xx文件夹中覆盖它:
<resources>
    <bool name="localized">true</bool>
</resources>

现在您可以为特定的语言环境创建Resource对象并检查localized资源值:
Resources currentResources = getResources();
AssetManager assets = currentResources.getAssets();
DisplayMetrics metrics = currentResources.getDisplayMetrics();
Configuration config = new Configuration(currentResources.getConfiguration());
config.locale = Locale.FRENCH;
Resources localizedResources = new Resources(assets, metrics, config);
if (localizedResources.getBoolean(R.bool.localized)) {
    // values-fr exists
}

10-08 16:25