Home > Mobile >  Do not clip bounds of AndroidView in Compose
Do not clip bounds of AndroidView in Compose

Time:11-15

From AndroidView documentation:

AndroidView will clip its content to the layout bounds, as being clipped is a common assumption made by Views - keeping clipping disabled might lead to unexpected drawing behavior. Note this deviates from Compose's practice of keeping clipping opt-in, disabled by default.

This seems to suggest that there is a way to turn clipping off, but I can't manage to do so.

I've tried:

  • Modifier.graphicsLayer(clip = false) on the AndroidView
  • clipToPadding = false on the View
  • clipToOutline = false on the View
  • clipChildren = false on the View

Is it possible to turn off clipping?

CodePudding user response:

It's a known feature request, here's a workaround until it's implemented:

@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)
            }
        }
    )
}
  • Related