Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do not clip bounds of AndroidView in Compose

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?

like image 748
Maarten Avatar asked Oct 12 '25 10:10

Maarten


1 Answers

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)
            }
        }
    )
}
like image 140
Philip Dukhov Avatar answered Oct 15 '25 01:10

Philip Dukhov