如何使用Kotlin实现Android menu.xml菜单项的国际化适配
错误原因
你遇到的编译错误有两个层面的问题:
- XML语法要求:所有属性值必须用双引号包裹,你直接写
getString(...)没有加引号,首先就触发了XML解析错误,你看到的法语报错翻译过来就是「item元素的android:title属性缺少左引号」。 - Android XML资源规则:菜单XML属于Android资源文件,不能直接调用Java/Kotlin层的
getString()方法,Android提供了专门的资源引用语法供XML中调用字符串资源。
正确实现步骤
- 先确认你已经在各语言对应的strings.xml中配置了对应字符串:
默认中文路径res/values-zh/strings.xml示例:
<string name="name">弹出提示</string>
英文国际化路径res/values-en/strings.xml示例:
<string name="name">Show Toast</string>
- 修改menu_main.xml中的title属性写法,用
@string/资源名的格式引用即可,修改后的完整代码如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_open_website" android:title="@string/open_website" android:icon="@drawable/ic_menu_quiz"/> <item android:id="@+id/menu_show_toast" android:title="@string/name" android:icon="@drawable/ic_menu_web"/> </menu>
按以上写法修改后,App运行时系统会自动根据当前设备的语言设置,加载对应strings.xml中的字符串显示到菜单项,不需要额外写代码处理。
内容的提问来源于stack exchange,提问作者LastCard1440
相关产品推荐
相关产品推荐

