0

我正在使用 Coil 在 Jetpack Compose 中加载远程图像,但我遇到了一个奇怪的问题。

这是我正在使用的代码:

 Column() {

            Image(
                painter = rememberImagePainter(
                    data = recipe.featuredImage,
                    builder = {
                        crossfade(true)
                        placeholder(R.drawable.empty_plate)
                    }
                ),
                modifier = Modifier
                        .fillMaxWidth()
                        .height(225.dp),
                contentScale = ContentScale.Crop,
                contentDescription = null
            
            ) ....}

当我将交叉淡入淡出设置true为图像时,不会裁剪或拉伸以适合宽度。但是,当交叉淡入淡出时false,图像会被正确裁剪以适合宽度。

奇怪的是,当我将图像滚动出屏幕然后将图像滚动回屏幕时,即使将 Crossfade 设置为 ,它也会正确裁剪true在此处输入图像描述

图像 A -图像未正确显示, 图像 B -我需要的正确显示。

我想使用交叉淡入淡出,因为图像需要一些时间来加载,并且我想在屏幕第一次加载时显示图像,而不是用户必须向下滚动才能正确显示图像。

环顾四周,但无法弄清楚如何解决这个问题,有什么线索吗?

4

1 回答 1

0

实际上,我遇到的问题是一个报告的错误,其中的摘录如下:

...“要暂时解决这个问题,可以将占位符的大小减小到小于加载图像的大小。在示例项目中,这可以通过减小 ic_food 的宽度和高度来完成。我试着寻找进入这个,它似乎正在发生,因为占位符图像比加载的图像更大(并且具有不同的纵横比)。这意味着 CrossfadePainter 的固有大小基于占位符的大小“。

为了解决这个问题,我只是在尺寸 (24 x 24) 中使用了一个较小的占位符并保持交叉淡入淡出,这解决了问题。

于 2021-12-17T17:36:25.690 回答