Jetpack Compose 自定义布局点击不起作用

0 android android-jetpack android-jetpack-compose

我创建了自己的类,名为 MyInputRow。

@Composable
fun MyInputRow(
    title: String,
    modifier: Modifier = Modifier,
    bgColor: Color,
    icon: Painter,
    clickAction: Unit
) {
    Row(
        modifier = Modifier
            .fillMaxWidth()
            .padding(6.dp)
            .background(color = bgColor)
            .clickable { clickAction },
        verticalAlignment = Alignment.CenterVertically,
    )
    {
        Text(
            modifier = Modifier
                .weight(1f)
                .padding(6.dp)
                .wrapContentWidth(Alignment.Start),
            text = title,
        )
        Image(
            painter = icon,
            contentDescription = "icon"
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这个 clickAction 不起作用。具体来说,在显示屏幕时由于某种原因会调用clickAction,而在单击Row时不会调用clickAction。
其调用方式如下。

class AddActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        setContent {
            MyTheme {
                    ...
                    AddMain()
            }
        }
    }
}

@Composable
fun AddMain() {
        BarcodeLayout()
    },
}

@Composable
fun BarcodeLayout() {
    Column(Modifier.fillMaxWidth()) {
        Text(text = {...})

        MyInputRow(
            title = ...,
            bgColor = ...,
            icon = ...,
            clickAction = scanBarcode()
        )
    }
}

fun scanBarcode() {
 Timber.d("call scanBarcode")
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么。请帮我。

kru*_*ekh 6

您可以尝试 2 个选项。

选项1:

.clickable { clickAction() }

或选项 2:

.clickable(clickAction)