忽略 Jetpack Compose Card 上的点击,但在包含的布局中捕获它

问题描述 投票:0回答:2

我有一个 CardView 的 XML 布局,我将其更改为 Jetpack Compose Card。 此卡包含在另一个可点击的较大 XML 布局中,该布局在该卡周围还有其他项目。

在旧的 CardView 布局中,未处理 onClick,单击卡片就像单击较大布局上的其他任何位置一样。

现在,当卡片是 Jetpack Compose 时,点击与较大的布局分离,并且默认情况下卡片根本不可点击。当我添加可点击修饰符时,该卡是可点击的,但与较大的布局分开,并且不由该布局处理。

如何使 Jetpack Compose Card 的行为与没有自己的单击操作的常规 CardView 相同? 我希望整个布局都是可点击的,无论点击是在卡片上还是其他任何地方。

我尝试过设置

  Modifier.clickable(
            interactionSource = MutableInteractionSource(),
            indication = null,
            onClick = {}
        )

但这并没有帮助,卡片仍然不可点击,只有当点击卡片外部时才会触发所需的操作。

使用

onClick = { }
使卡片可点击,但与布局的其余部分分开。

我无法将其放入 Box 中,因为该卡片包含在 XML 布局中

android kotlin android-jetpack-compose android-jetpack android-cardview
2个回答
2
投票

如果你想有一个可点击的父布局,只需使用:

val interactionSource = remember { MutableInteractionSource() }

Box(Modifier
    //...
    .clickable(
        interactionSource = interactionSource,
        indication = LocalIndication.current,
        onClick = { /** doSomething() **/}
    )
    //.padding(4.dp)
) {
    Card(){
        //Card content
    }
}


0
投票

你在这里找到答案了吗?互操作似乎不支持这种情况

© www.soinside.com 2019 - 2024. All rights reserved.