Android本地化Drawable未按对应语言环境显示问题求助
我来帮你梳理下这个问题,这种情况我自己开发时也碰到过几次,大概率是几个容易忽略的细节没处理好,你可以逐一排查:
确认文件夹命名与层级
一定要保证drawable-it是直接放在res目录下的,路径是res/drawable-it/,不能嵌套在其他drawable文件夹里。另外注意区域标识符是小写的it,Android对资源文件夹的命名大小写是严格要求的。检查资源文件的一致性
drawable-it里的资源文件名必须和默认drawable里的完全一致,包括大小写、后缀名(比如.png、.xml)。举个例子,默认是ic_home.xml,本地化资源就不能写成IC_Home.png,哪怕后缀不同都可能导致识别失败。调整Android Studio的项目视图
有时候Android Studio的“Android”视图会自动折叠本地化资源,你可以切换到“Project”视图,直接查看res目录下的所有文件夹,确认drawable-it是否存在。如果用回“Android”视图,展开drawable文件夹后,看看有没有下拉箭头可以展开语言变体,本地化资源可能藏在这里。验证系统语言设置
确保你的测试设备/模拟器确实切换到了意大利语,而且没有在应用里硬编码强制设置语言(比如在Application或Activity里修改了Locale),这会覆盖系统的语言选择。清理重建项目
Android Studio的缓存偶尔会导致资源不被识别,试试点击菜单栏的Build->Clean Project,然后Rebuild Project,完成后再看布局预览和运行效果。检查资源类型匹配(可选)
如果默认drawable里是矢量图(.xml),尽量保持drawable-it里的资源类型一致,虽然运行时类型不同一般没问题,但布局预览可能会出现异常。
另外可以加个小验证步骤:在Activity的onCreate方法里打印当前应用的Locale,确认语言环境是否正确:
Log.d("LocaleDebug", "当前Locale: " + getResources().getConfiguration().locale);
如果输出是it或者it_IT,说明语言环境没问题,问题集中在资源识别上;如果不是,那就要检查语言切换的设置了。
内容的提问来源于stack exchange,提问作者Nicola Gallazzi

