【问题标题】:Jetpack Compose, how to change the color of the action of the snackbar in .showSnackbar() in a Scaffold?Jetpack Compose,如何在 Scaffold 中的 .showSnackbar() 中更改小吃店动作的颜色?
【发布时间】:2021-12-12 12:27:46
【问题描述】:

所以,我使用 scaffoldState.snackbarHostState.showSnackbar() 方法在我的 Scaffold 中显示了一个快餐栏,尽管“撤消”操作的颜色是深紫色,我想将其更改为其他颜色。

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

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

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

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

谢谢!

【问题讨论】:

    标签: android kotlin android-jetpack-compose android-jetpack android-snackbar


    【解决方案1】:

    您可以使用 actionColor 参数自定义您的Snackbar

    类似:

    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
                )
            }
        },
    

    那就用吧:

    scope.launch {
            scaffoldState.snackbarHostState.showSnackbar(
                   message = "Note Deleted",
                   actionLabel = "Undo"
             )
    }
    

    【讨论】:

    • 如何根据运行时情况更改颜色?例如,绿色表示成功,否则红色......当我们创建主机时如何将状态值重新发送给主机?
    • @tronku 我猜你可以创建一个返回颜色并检查该信息的函数。
    猜你喜欢
    • 2022-11-06
    • 2018-08-28
    • 2021-04-16
    • 2016-03-05
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2022-11-10
    相关资源
    最近更新 更多