Jetpack Compose,如何更改脚手架中 .showSnackbar() 中小吃栏操作的颜色?

All*_*dge 7 android kotlin android-snackbar android-jetpack android-jetpack-compose

因此,我使用该方法在脚手架内显示了一个小吃栏scaffoldState.snackbarHostState.showSnackbar(),尽管“撤消”操作的颜色是深紫色,我想将其更改为其他颜色。

我知道我可以将其显示为自定义组件,尽管我想在 a 中启动它coroutineScope(),但我认为这是不可能的。

我的小吃店代码是这样的。

scope.launch {
  val result = scaffoldState.snackbarHostState.showSnackbar(
    message = "Note Deleted",
    actionLabel = "Undo",
  )
  if (result == SnackbarResult.ActionPerformed) { 
    viewModel.onEvent(NotesEvent.RestoreNote)
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以更改此处操作的文本颜色,如果可以,如果您能提供示例或资源,那就太好了。

谢谢!

Gab*_*tti 23

您可以Snackbar使用actionColor参数进行自定义。

就像是:

val scaffoldState = rememberScaffoldState()
Scaffold(
    scaffoldState = scaffoldState,
    snackbarHost = {
        // reuse default SnackbarHost to have default animation and timing handling
        SnackbarHost(it) { data ->
            // custom snackbar with the custom colors
            Snackbar(
                actionColor = Green,
                //contentColor = ...,
                snackbarData = data
            )
        }
    },
Run Code Online (Sandbox Code Playgroud)

然后就可以使用它:

scope.launch {
        scaffoldState.snackbarHostState.showSnackbar(
               message = "Note Deleted",
               actionLabel = "Undo"
         )
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 如何根据运行时情况更改颜色?例如,绿色表示成功,否则红色...当我们创建主机时,如何将状态值重新发送到主机? (7认同)
  • 仅更改“backgroundColor”对我有用。`actionColor` 和 `contentColor` 保持浅灰色或部分透明的白色。知道为什么吗? (3认同)