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

Jetpack Compose中是否有对应@tools:sample/*的预览模拟数据方案?

方案1:通过资源引用复用原有@tools:sample/*资源

你完全可以在Compose中继续沿用原来的@tools:sample/*系列模拟资源,只需要做一层简单的资源映射即可:

  • 首先在res/values目录下创建一个专用于预览的资源文件(例如preview_samples.xml),把需要用到的sample资源预先声明为普通字符串资源:
<resources>
    <string name="sample_full_name">@tools:sample/full_names</string>
    <string name="sample_first_name">@tools:sample/first_names</string>
    <string name="sample_city">@tools:sample/cities</string>
    <string name="sample_date">@tools:sample/dates</string>
</resources>
  • 之后在Compose函数中直接通过stringResource()读取这些资源即可,和原有XML的使用逻辑完全一致:只有Android Studio预览时会加载模拟数据,正式打包不会带入这些工具类资源,不会对线上包产生影响。
@Composable
@Preview
fun UserInfoCardPreview() {
    UserInfoCard(
        userName = stringResource(R.string.sample_full_name),
        location = stringResource(R.string.sample_city),
        joinDate = stringResource(R.string.sample_date)
    )
}

方案2:使用Compose原生@PreviewParameter方案

这是Jetpack Compose官方提供的模拟数据方案,更适合需要批量生成多组预览数据的场景:

  • 首先实现PreviewParameterProvider接口,定义你需要的模拟数据源:
// 示例数据类
data class UserInfo(
    val name: String,
    val city: String,
    val joinDate: String
)

class UserInfoSampleProvider : PreviewParameterProvider<UserInfo> {
    override val values = sequenceOf(
        UserInfo("张三", "北京", "2023-01-15"),
        UserInfo("李四", "上海", "2022-11-03"),
        UserInfo("王五", "广州", "2023-06-20")
    )
}
  • 在预览的Composable函数参数上添加@PreviewParameter注解引入数据源,Android Studio会自动为每组数据生成对应的预览效果:
@Composable
@Preview
fun UserInfoCardPreview(
    @PreviewParameter(UserInfoSampleProvider::class) userInfo: UserInfo
) {
    UserInfoCard(
        userName = userInfo.name,
        location = userInfo.city,
        joinDate = userInfo.joinDate
    )
}

如果需要更灵活的随机模拟数据,也可以直接在预览代码中编写普通Kotlin逻辑生成随机内容,和日常开发代码没有差异,所有预览用的模拟代码都不会被打包到正式安装包中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:07