不要在 Compose 中裁剪 AndroidView 的边界

Maa*_*ten 4 android android-jetpack-compose

来自AndroidView 文档

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

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

我试过了:

  • Modifier.graphicsLayer(clip = false)AndroidView
  • clipToPadding = falseView
  • clipToOutline = falseView
  • clipChildren = falseView

是否可以关闭剪辑?

Phi*_*hov 6

这是一个已知的功能请求,在实施之前有一个解决方法:

@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)
            }
        }
    )
}
Run Code Online (Sandbox Code Playgroud)