You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose如何获取字符串资源实际值用于modifier的contentDescription?

问题根因

R.string.xxx 是Android资源编译阶段自动生成的整数类型资源唯一标识,不是实际的字符串内容,直接调用toString()只会把这个整数ID转成字符串格式,自然无法得到你在strings.xml中定义的文本。

解决方案

Jetpack Compose提供了专门的stringResource() API,可直接在可组合项作用域内获取字符串资源,自动适配系统当前语言设置,完全满足TalkBack多语言读取的需求。

首先导入依赖:

import androidx.compose.ui.res.stringResource

修正后的代码示例:

// 在可组合项作用域内先获取实际字符串值
val contentDesc = stringResource(id = R.string.my_string)
// 打印日志验证
Log.d("Test", contentDesc)
// 设置到语义属性中
....modifier = Modifier
        .fillMaxWidth()
        .focusRequester(focusRequesters[1])
        .clearAndSetSemantics { contentDescription = contentDesc }
)
注意事项

stringResource() 仅支持在带有@Composable注解的作用域内调用,如果你需要在非Compose场景(如ViewModel、普通工具类)获取字符串资源,请使用Context原生方法:

val myStr = context.getString(R.string.my_string)

内容的提问来源于stack exchange,提问作者Corrupted Disciple

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:39:01