繁体   English   中英

如何在 Jetpack Compose 中使透明颜色后面的区域不可交互/不可点击?

[英]How to make area behind transparent color not interactable/clickable in Jetpack Compose?

考虑到这个充当“对话框”的可组合对象被绘制在根应用程序的前面

显示可组合项的屏幕截图

我试图通过使其适合整个屏幕并使其根容器具有基本background(Color.Gray.copy(alpha = 0.5f)修饰符来模拟此对话框。

但是,即使它在前面,仍然可以与顶部按钮进行交互。

我的问题是,是否有一种“直接”的方式来“禁用”特定可组合树的交互,以避免将参数(例如“可点击”)传递给所有受影响的组合?

我想这样做:

  • 从 alpha 颜色后面的区域拍摄“截图”;
  • 将屏幕截图绘制为图像;
  • 然后绘制前面的可组合(在我的示例中为“对话框”)。

但是,我不知道这有多么值得实施,甚至不知道如何拍摄那个“截图”。

此外,可能是一种处理此问题的方法,使用相关的东西来remember compostion state等。

你可以有一个 Box 消耗点击事件而没有点击反馈:

val interactionSource = remember { MutableInteractionSource() }
Box(
    modifier = modifier
        .background(
            color = MaterialTheme.colors.surface.copy(alpha = .4f)
        )
        .clickable(
            onClick = {
                if (dismissOnTouchOutside) {
                    onDismiss()
                }
            },
            interactionSource = interactionSource,
            indication = null
        ),
    contentAlignment = Alignment.Center,
) {
    // content here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM