【问题标题】:Do not clip bounds of AndroidView in Compose不要在 Compose 中裁剪 AndroidView 的边界
【发布时间】:2021-11-15 08:01:31
【问题描述】:
来自AndroidViewdocumentation:
AndroidView 会将其内容剪裁到布局边界,因为被剪裁是Views 所做的常见假设 - 保持剪裁禁用可能会导致意外的绘图行为。请注意,这与 Compose 保持剪辑选择加入的做法有所不同,默认情况下禁用。
这似乎表明有一种方法可以关闭剪辑,但我无法做到。
我试过了:
-
Modifier.graphicsLayer(clip = false) AndroidView
-
clipToPadding = false View
-
clipToOutline = false View
-
clipChildren = false View
是否可以关闭剪辑?
【问题讨论】:
标签:
android
android-jetpack-compose
【解决方案1】:
这是一个已知的feature request,这是一个解决方法,直到它被实施:
@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)
}
}
)
}