首页 > 解决方案 > 不要在 Compose 中裁剪 AndroidView 的边界

问题描述

AndroidView 文档

AndroidView会将其内容裁剪到布局边界,因为被裁剪是Views 做出的常见假设 - 保持裁剪禁用可能会导致意外的绘图行为。请注意,这与 Compose 保持剪辑选择加入的做法有所不同,默认情况下是禁用的。

这似乎表明有一种方法可以关闭剪辑,但我无法做到。

我试过了:

是否可以关闭剪辑?

标签: androidandroid-jetpack-compose

解决方案


这是一个已知的功能请求,这是一个解决方法,直到它被实施:

@Composable
fun <T : View> AndroidView(
    clipToBounds: Boolean,
    factory: (Context) -> T,
    modifier: Modifier = Modifier,
    update: (T) -> Unit = NoOpUpdate,
) {
    androidx.compose.ui.viewinterop.AndroidView(
        factory = factory,
        modifier = modifier,
        update = if (clipToBounds) {
            update
        } else {
            {
                (it.parent as? ViewGroup)?.clipChildren = false
                update(it)
            }
        }
    )
}

推荐阅读