7

我正在尝试使用 Jetpack Compose Coil 显示具有填充宽度和自动高度的图像。我希望图像采用全宽和自动高度。但图像仅在我指定固定高度时显示。

Image(
    painter = rememberImagePainter(
        data = post.image
    ),
    contentDescription = null,
    contentScale = ContentScale.Crop,
    modifier = Modifier.fillMaxWidth()
)

我试过了.fillMaxHeight().fillMaxSize()但它不起作用。有什么办法可以做到这一点?

4

2 回答 2

9

当 view width/之一height被计算为零时会发生这种情况,这意味着它不应该显示并且不需要下载它。在 compose tracker 上查看有关此问题的原因的更多信息。

你应该让你的大小不等于零。根据您的布局,可以使用宽度/高度/纵横比修饰符的变化来完成。

如果您想获得原始尺寸的图像,可以添加size(OriginalSize)到painter builder。这将强制图像开始加载。此参数使您的视图下载并放入图像的完整大小的内存中,而不针对当前视图进行优化。所以小心使用它,只有当你确定图像不会太大并且你真的不能添加使用大小修饰符时。

Image(
    painter = rememberImagePainter(
        data = post.image,
        builder = {
            size(OriginalSize)
        },
    ),
    contentDescription = null,
    contentScale = ContentScale.Crop,
    modifier = Modifier.fillMaxWidth()
)
于 2021-08-24T13:21:02.513 回答
0

如果您的图像OriginalSize对于您的可组合物来说太小了,您也可以scale(Scale.FIT)在您的构建器中使用。

您的图像将最大程度地适合您的组合,同时保持其纵横比。

Image(
    rememberImagePainter(
        data = user?.photoUrl?:"",
        builder = {
            size(OriginalSize)
            scale(Scale.FIT)
            transformations(CircleCropTransformation())
        }
    ),
    contentDescription = "Picture",
    contentScale = ContentScale.FillWidth
)
于 2021-09-02T15:13:54.250 回答