Android Studio的res/values文件夹下可否使用自定义命名的XML资源文件?
结论
res/values 目录下完全支持使用任意自定义命名的 XML 文件存放标准资源(字符串、字符串数组、颜色、样式等),无需强制使用 strings.xml、array.xml 这类默认文件名,也可以正常实现多语言翻译适配。
报错原因
Android 资源索引 R 类的子类是按照资源类型划分,而非资源定义的文件名划分:
你在 preferences.xml 中定义的 <string-array> 属于数组类型资源,无论存放在 values 目录下的哪个 XML 文件中,最终都会被归类到 R.array 子类下,不会生成和文件名对应的 R.preferences 子类。
正确引用方式
将你的引用代码修改为通过数组类型索引访问即可:
String[] prefsTitlesArray = getResources().getStringArray(R.array.prefs_titles);
补充规则
- values 目录下的所有 XML 文件会被系统合并解析,资源仅按类型归类,和文件名完全无关
- 多语言适配只需在对应语言的
values-xx目录下创建同名的preferences.xml,覆盖对应<string-array>定义即可,系统会自动按当前语言加载对应资源 - 你之前查阅的资料提到的「自定义 XML 文件名」指的是存放在
res/xml目录下的任意结构 XML 资源,这类资源才会生成R.xml.xxx格式的索引,不适用于 values 类的标准资源场景。
内容的提问来源于stack exchange,提问作者Fat Monk
相关产品推荐
相关产品推荐

