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

在LazyVerticalGrid中加载图片以填充最大高度的问题

解决LazyVerticalGrid中KamelImage高度不一致问题

问题根源是未给图片容器强制固定宽高比例,导致不同原图比例的图片加载后高度随原图变化。按以下方式修改代码即可统一高度:

  • 给KamelImage添加aspectRatio修饰符指定固定宽高比(比如电影海报常用的2:3),同时调整布局修饰符和内容缩放规则:

修改后的完整MovieListItem代码:

fun MovieListItem(
    movie: MovieResult,
    modifier: Modifier = Modifier,
) {
    Column(
        modifier = modifier.fillMaxWidth(),
    ) {
        KamelImage(
            resource = { asyncPainterResource(data = movie.posterPath) },
            contentDescription = movie.title,
            modifier = Modifier
                .fillMaxWidth()
                .aspectRatio(2f / 3f), // 强制2:3宽高比,可根据需求调整
            contentScale = ContentScale.Crop, // 裁剪图片填满容器,避免空白或变形
            onLoading = {_ ->
                CircularProgressIndicator(
                    modifier = Modifier.align(Alignment.Center),
                    color = Color.Blue
                )
            },
            onFailure = {
                Image(
                    imageVector = vectorResource(Res.drawable.compose_multiplatform), 
                    contentDescription = "加载失败占位图"
                )
            },
        )

        Text(
            modifier = Modifier
                .fillMaxWidth()
                .height(60.dp)
                .background(color = getRandomColor().copy(alpha = 0.4f))
                .wrapContentHeight(Alignment.CenterVertically)
                .padding(horizontal = 16.dp),
            maxLines = 2,
            textAlign = TextAlign.Start,
            overflow = TextOverflow.Ellipsis,
            text = movie.title,
            color = Color.Black)
    }
}

关键说明:

  1. aspectRatio(2f/3f):强制图片容器的宽高比例,LazyVerticalGrid列宽固定,因此所有图片高度会自动统一为「列宽 × 3/2」。
  2. ContentScale.Crop:让图片裁剪后填满容器,避免因原图比例差异出现空白或拉伸变形;若需完整显示图片,可改用ContentScale.Fit,但容器两侧可能出现空白。
  3. 补充了有意义的contentDescription,提升应用可访问性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:07:20