Ali*_*phi 5 android kotlin android-jetpack android-jetpack-compose composable
我有一列,中间有一张卡片。单击列时应该有一个操作,但单击卡片时不应发生任何操作。(如可取消的对话框)
当我用XML做到这一点时,当为列设置可点击(true)时,这个问题得到了解决,但是在Jetpack Compose中,当我点击卡片时,有一个无法删除它的效果
我将此代码设置为卡的修饰符:
.clickable{}
Run Code Online (Sandbox Code Playgroud)
如何从可点击项目中删除默认效果(按下效果无波纹)?
Thr*_*ian 13
您需要将指示设置为 null,以便在单击可组合项时不会出现波纹
Modifier.clickable(
interactionSource = MutableInteractionSource(),
indication = null,
onClick = {}
)
Run Code Online (Sandbox Code Playgroud)
假设您不希望波纹在 Column 内的 Card 中移动,并且要实现这一点,您可以使用Box包含Column和Card作为同级的 。
Column(
modifier = Modifier
.size(200.dp)
.background(Color.Green)
.clickable { },
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Card(
elevation = 4.dp,
shape = RoundedCornerShape(5.dp),
modifier = Modifier
.size(100.dp)
.clickable(
interactionSource = MutableInteractionSource(),
indication = null,
onClick = {
Toast
.makeText(context, "Card", Toast.LENGTH_SHORT)
.show()
}
)
) {
Text("In Card")
}
}
Spacer(modifier = Modifier.height(4.dp))
Box(
contentAlignment = Alignment.Center
) {
Column(
modifier = Modifier
.background(Color.Green)
.size(200.dp)
.clickable {
Toast
.makeText(context, "Column", Toast.LENGTH_SHORT)
.show()
},
) {
}
Card(
elevation = 4.dp,
shape = RoundedCornerShape(5.dp),
modifier = Modifier
.size(100.dp)
.clickable(
interactionSource = MutableInteractionSource(),
indication = null,
onClick = {
Toast
.makeText(context, "Card", Toast.LENGTH_SHORT)
.show()
}
)
) {
Text("In Card")
}
}
Run Code Online (Sandbox Code Playgroud)
第一个是我猜你拥有的,如果你使用一个盒子并添加这两个项目,你将不会看到卡内有波纹移动
第一个是你拥有的第二个是盒子里的,卡片上不会有波纹
| 归档时间: |
|
| 查看次数: |
8887 次 |
| 最近记录: |