Compose 去除点击水波纹阴影效果_局部and全局去除-CompositionLocal实例
compose
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
项目地址:https://gitcode.com/gh_mirrors/compose/compose
免费下载资源
·
问题1:compose view 的点击默认有阴影效果,实际开发中要求去除?
问题2:实际开发中,要求去掉点击效果,不单单是一个view,肯定是整个界面,甚至是整个应用,如何全局去除默认的点击效果?
// 举例代码,默认有点击阴影效果
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Image(
painterResource(R.drawable.ic_toolbar_search),
contentDescription = null,
modifier = Modifier
.size(60.dp)
.clickable(
onClick = { model.count() })
)
Text(
text = "compose textView"
)
Text(
text = "compose textView2"
)
}
解决办法:
一:针对单个view,去除点击效果,可以在clickable 中添加indication = null, interactionSource = remember { MutableInteractionSource() }
// 举例代码,局部去除点击阴影效果
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Image(
painterResource(R.drawable.ic_toolbar_search),
contentDescription = null,
modifier = Modifier
.size(60.dp)
.clickable(
onClick = { model.count() },
// 去除点击效果
indication = null,
interactionSource = remember {
MutableInteractionSource()
})
)
Text(
text = "compose textView"
)
Text(
text = "compose textView2"
)
}
二:针对整个Activity,你可以在最root的compose里设置,通过CompositionLocal(让数据流经界面树的一种隐式方式),属性传递,把children就全部替换了
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// Composable 根源view,一般用来设置主题
ComposeTheme() {
// data
mViewModel = AboutViewModel()
initData()
//view
AboutView(this, mViewModel, goBack = { goBack() })
ShowCustomDialog(mViewModel, startDebug = { mViewModel.startDebug(this) })
}
}
}
@Composable
fun ComposeTheme(
content: @Composable () -> Unit
) {
MaterialTheme(colors = LightColorPalette) {
// 设置全局参数,去除默认点击效果
CompositionLocalProvider(
LocalIndication provides NoIndication
) {
ProvideTextStyle(value = MaterialTheme.typography.body1, content = content)
}
}
}
// null indication
object NoIndication : Indication {
private object NoIndicationInstance : IndicationInstance {
override fun ContentDrawScope.drawIndication() {
drawContent()
}
}
@Composable
override fun rememberUpdatedInstance(interactionSource: InteractionSource): IndicationInstance {
return NoIndicationInstance
}
}
参考
GitHub 加速计划 / compose / compose
33.26 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:1 个月前 )
73d3a25e
Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
12 天前
3524bcfa
Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
12 天前
更多推荐
已为社区贡献7条内容
所有评论(0)