如何使 Compose Preview 显示从 Web 加载的图像/矢量资源?

how to make Compose Preview display image/vector resources loaded from web?

提问人:hescul 提问时间:7/6/2022 更新时间:8/23/2023 访问量:1747

问:

我使用Coil从Web加载.svg资源,例如:

@Composable
fun Widget(modifier: Modifier = Modifier) {
    AsyncImage(
        modifier = Modifier.fillMaxSize(),
        model = ImageRequest.Builder(LocalContext.current)
            .decoderFactory(SvgDecoder.Factory())
            .data("https://www.svgrepo.com/show/326168/circle-large.svg")
            .build(),
        contentDescription = null,
        contentScale = ContentScale.FillWidth
    )
}

它在设备上运行时会成功加载,但在 Compose Preview 中运行时,不会显示任何资源。如何让 Compose Preview 加载和显示从 Web 获取的资源?

安卓 android-jetpack-compose 线圈 android-jetpack-compose-preview

评论

2赞 Priyank Jain 7/6/2022
我认为无法在预览中访问网络。您需要在真实设备上运行或使用占位符参数来显示将在预览中呈现的本地资源。预览限制
0赞 DmitryBorodin 7/14/2023
本地资源也未显示,异步加载程序在预览期间未异步加载。

答:

0赞 Ben Gooding 8/23/2023 #1

我认为唯一的解决方法是手动设置图像(如果它是预览),如下所示:

if (isPreview) {
     Image(
         painterResource(id = R.drawable.my_test_image),
         ...
     )
 } else {
     AsyncImage(
         ...
     )
 }