You need to enable JavaScript to run this app. Android Jetpack Compose中如何使用strings.xml字符串资源
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose中如何使用strings.xml字符串资源

Jetpack Compose 中各类Android字符串资源的正确调用方式

在Jetpack Compose中调用Android资源,全部基于框架内置的可组合资源API实现,无需手动获取Context和Resources实例,可直接在Composable作用域内完成各类资源的读取,对应几类常见资源类型的调用方式如下:

基础无参静态字符串

对应xml中定义的普通<string>资源,直接使用stringResource()传入资源ID即可:

// 调用app_name资源
Text(
    text = stringResource(id = R.string.app_name)
)

带占位参数的字符串

对应xml中带格式占位符的<string>资源,在stringResource()的可变参数部分传入对应占位符的实际值即可:

// 替换greeting字符串中的占位符,传入实际参数
Text(
    text = stringResource(id = R.string.greeting, "Compose 开发者")
)

注意:当前示例里定义的Hello %!属于单占位符写法,多参数场景下建议使用带位置序号的占位符(如Hello %1$s,你有%2$d条新消息),避免参数传值顺序错乱。

复数形式(Plurals)字符串

对应xml中定义的<plurals>资源,需要使用专属的pluralStringResource()API,不能直接套用普通的stringResource():

val likeCount = 12
Text(
    text = pluralStringResource(
        id = R.plurals.likes, // 复数资源ID
        quantity = likeCount, // 用于匹配quantity规则的数值:1匹配one标签,其余匹配other标签
        likeCount // 用于替换字符串中数字占位符的实际值
    )
)

字符串数组

对应xml中定义的<string-array>资源,使用泛型版的arrayResource()调用:

// 加载行星字符串数组
val planetArray = arrayResource<Array<String>>(id = R.array.planets)

// 遍历数组渲染UI
Column {
    planetArray.forEach { planetName ->
        Text(text = planetName)
    }
}

补充说明:如果需要在非Composable作用域(如ViewModel、通用工具类)中读取资源,可以通过LocalContext.current.resources获取Resources实例后再读取,但优先推荐在UI层使用Compose专属的资源API,减少跨层的Context依赖耦合。

内容的提问来源于stack exchange,提问作者Valeriy Katkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 12:36:03