strings.xml 是 android 中集中管理文本资源的标准 xml 文件,位于 res/values/strings.xml,支持格式化、复数、html 标签及多语言适配;需用 r.string.xxx 引用,避免硬编码,并注意转义、换行和动态内容禁用。

strings.xml 是 Android 项目里的文本资源定义文件
它是一个标准的 XML 文件,存放在 res/values/strings.xml 路径下,用来集中声明应用中所有可读文本(比如按钮文字、提示信息、标题等)。Android 构建系统会把它编译进 APK,并在运行时通过资源 ID 快速查找到对应字符串。直接硬编码文本到 Java/Kotlin 或布局 XML 中是不推荐的,既难维护又无法支持多语言。
如何在代码和布局中引用 strings.xml 里的字符串
引用方式取决于使用场景,核心是用资源 ID(R.string.xxx)代替字面量字符串:
- 在 Kotlin/Java 中:用
getString(R.string.app_name)或resources.getString(R.string.error_timeout) - 在 XML 布局中:用
@string/app_name,例如android:text="@string/login_button" - 带参数的字符串需配合
getString()和format():先在strings.xml里写<string name="welcome_msg">Hello, %1$s! You have %2$d new messages.</string>,再在代码中调用getString(R.string.welcome_msg, userName, count)
strings.xml 支持哪些常见功能和陷阱
它不只是存普通文本,还支持格式化、复数、HTML 标签等,但容易因语法或转义出错:
本文档主要讲述的是Android的资源与国际化设置;资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML,PNG以及JPEG文件XML文件根据描述的不同有不同格式。这份文档描述可以支持什么样的文件,语法,以及各种格式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- 特殊字符(如引号、&)必须转义:
"表示双引号,&表示 & 符号 - 要显示换行,XML 中用
\n,但需确保控件支持(如TextView的android:singleLine="false"或默认多行) - HTML 标签(如
<b></b>)可用Html.fromHtml()渲染,但 Android 12+ 需用Html.FROM_HTML_MODE_COMPACT参数,否则返回空字符串 - 不要在
strings.xml里写动态内容(如用户昵称、时间戳),那是代码逻辑该做的事
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MyApp</string>
<string name="error_network">Network error. Please try again.</string>
<string name="welcome_template">Welcome, <b>%1$s</b>!</string>
</resources>
多语言适配时 strings.xml 怎么组织
每种语言对应一个独立的 strings.xml,放在不同限定符目录下:
- 中文简体:
res/values-zh-rCN/strings.xml - 英文(美国):
res/values-en-rUS/strings.xml - 西班牙语(西班牙):
res/values-es-rES/strings.xml
系统根据设备语言区域自动加载对应文件。注意:所有 strings.xml 中的 name 属性必须完全一致,缺失条目会回退到默认 values/strings.xml,可能导致显示英文或崩溃(如果代码里强制要求某字符串存在但没定义)。
<plurals></plurals> 而不是普通 <string></string>,且调用 getQuantityString(),不是 getString()。漏掉这个细节,多语言上线后很容易出错。









