当下面的代码运行时,它会覆盖下面的屏幕元素.为了防止下面的元素被意外点击,我在列中添加了'clickable'属性,它应该捕获点击.但是,如图所示,并非整个列区域都是可点击的,下面的项目可能会被意外点击.有没有办法让整个栏目区域都可以点击?当然,如果通知是可见的,我可以锁定下面的元素,但也许有一个简单的解决方案,如整个列区域可点击?

enter image description here


@Composable
fun ShowAddedUserData(
    userName: String,
    userType: String,
    userPass: String,
    onClear: () -> Unit
) {

    val name = stringResource(id = R.string.user_name) + " : " + userName
    val type = stringResource(id = R.string.user_type) + " : " + userType
    val pass = stringResource(id = R.string.password) + " : " + userPass
    val userInfoToCopy = "$name\n$type\n$pass"
    val clipboardManager = LocalClipboardManager.current
    val localContext = LocalContext.current
    val copyDataInfo = stringResource(id = R.string.data_copied_to_clipboard)

    Spacer(modifier = Modifier.height(20.dp))
    Column(
        modifier = Modifier.clickable {  },
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Center
    ) {
        Text(
            modifier = Modifier.padding(horizontal = 20.dp),
            text = stringResource(id = R.string.user_created)
        )
    }

    Spacer(modifier = Modifier.height(20.dp))
    Column(
        modifier = Modifier
            .clip(shape = RoundedCornerShape(20.dp))
            .background(color = Color.LightGray),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {

        Spacer(modifier = Modifier.height(10.dp))
        Text(modifier = Modifier.padding(horizontal = 20.dp), text = name)
        Text(modifier = Modifier.padding(horizontal = 20.dp), text = type)
        Text(modifier = Modifier.padding(horizontal = 20.dp), text = pass)
        Spacer(modifier = Modifier.height(20.dp))
        Image(
            painter = painterResource(id = R.drawable.ic_copy_content_blue),
            contentDescription = "copy content",
            Modifier.clickable {
                clipboardManager.setText(AnnotatedString(userInfoToCopy))
                Toast.makeText(localContext, copyDataInfo, Toast.LENGTH_SHORT).show()
            })
        Text(
            modifier = Modifier.padding(horizontal = 5.dp),
            text = stringResource(id = R.string.copy_to_memory),
            fontSize = 12.sp
        )
        Spacer(modifier = Modifier.height(30.dp))
        Button(onClick = onClear) {
            Text(text = stringResource(id = R.string.clear))
        }
        Spacer(modifier = Modifier.height(10.dp))
    }
}

推荐答案

看看AlertDialogDialog,它们提供了一种简单的方法来覆盖您的用例.

AlertDialog(
    icon = {},
    title = {},
    text = {
        // This actually is f或 Text, but you can pass any Composable here
        ShowAddedUserData(/** ... **/)
    },
    onDismissRequest = {},
    confirmButton = {},
    dismissButton = {}
)

Dialog(onDismissRequest = { }) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .wrapContentHeight()
            .padding(16.dp),
        shape = RoundedC或nerShape(16.dp),
    ) {
        ShowAddedUserData(/** ... **/)
    }
}

Alternatively, you can wrap your ShowAddedUserData Composable into a Surface. A Surface by default consumes all interactions in the area it is displayed in.

Kotlin相关问答推荐

在没有外部 map 的情况下转换列表项

API迁移到Spring Boot 3后,Spring Security无法工作

升级使用jOOQ Gradle插件生成代码失败

Spring Boot kotlin协程不能并行运行

我可以更改方法中泛型类的类型参数边界吗?

始终抛出的函数 - 具有块主体的函数中需要的返回表达式

如何在 Spring Boot 3 中为内部类提供运行时提示

Kotlin 中的密封和内部有什么区别?

如何在 Kotlin 中不受约束?

如何将glide显示的图像下载到设备存储中.Kotlin

我们应该在 Effect 和 Either 之间 Select 哪个作为我们业务服务的返回类型?

JavaFX - 你如何在 Kotlin 中使用 MapValueFactory?

Kotlin 有垃圾收集器吗?如果是这样,它基于哪种算法?

使用 Hilt 注入 CoroutineWorker

Kotlin 解构超过五个组件

在 Spring Framework 5.1 中注册具有相同名称的测试 bean

Kotlin boxed Int 不一样

Kotlin not nullable值可以为null吗?

ObjectAnimator.ofFloat 不能直接在kotlin中取Int作为参数

@StringRes、@DrawableRes、@LayoutRes等android注释使用kotlin参数进行判断