如果不使用 Card 覆盖,Compose Lottie 组件将无法正常工作

Compose Lottie component doesn't work properly if you don't cover it with Card

我想在列中有一个 Lottie 文件,但是 Lottie 文件来自其他控件,我可以通过将 Lottie 文件放入卡中来解决问题

看例子

@Composable
fun TileAnimation(modifier: Modifier = Modifier) {
    Card {
        Column {
            Text(
                text = "headline",
                modifier = Modifier
                    .fillMaxWidth()
            )

            val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.lottielogo))
//            Card(
//                modifier = Modifier
//                    .height(183.dp)
//                    .then(modifier),
//                shape = RoundedCornerShape(0.dp)
//            ) {
            LottieAnimation(
                composition = composition,
                modifier = modifier
                    .fillMaxWidth()
                    .height(183.dp),
                contentScale = ContentScale.Crop,
            )
//            }
            Box(modifier = Modifier.fillMaxWidth()) {
                Button(
                    onClick = { }, modifier = Modifier
                        .align(Alignment.Center)
                        .wrapContentSize()
                ) {
                    Text(text = "Button")
                }
            }
        }
    }
}

结果如您所见,文字被覆盖了 ->

如果你取消卡片部分的注释,那么它看起来很好 ->

Kotlin 版本 1.6.10 和 compose 1.1.0,这是 lottie 库 ->

implementation "com.airbnb.android:lottie-compose:4.2.2"

顺便说一句,您可以从 here 下载 Lottie 文件 1: https://lottiefiles.com/96036-bored-cat

请问我的解决方案是否正确,或者你们建议另一种方法?

默认情况下,Compose 中的所有视图都不会裁剪到边界。

contentScale = ContentScale.Crop 只决定缩放。

要将内容裁剪到由其他修饰符指定的视图大小,请将 Modifier.clip(RectangleShape) 添加到您的视图。