android - Jetpack Compose,如何在 Scaffold 中的 .showSnackbar() 中更改 snackbar Action 的颜色?

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

所以,我使用 scaffoldState.snackbarHostState.showSnackbar() 方法在我的 Scaffold 中显示一个 snackbar ,尽管“撤消”操作的颜色是深紫色,我会喜欢把它改成别的东西。

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

我的 snackbar 代码是这样的。

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

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

谢谢!

最佳答案

您可以使用 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"
         )
}

enter image description here

关于android - Jetpack Compose,如何在 Scaffold 中的 .showSnackbar() 中更改 snackbar Action 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69734835/

相关文章:

java - 在主线程中创建字体会影响应用程序性能吗?

android - 如何在 FragmentActivity 上设置工具栏?

spring - 我无法在 Springboot-Kotlin 中排除 MongoAutoConfiguration (MongoSocketOpenException)

android - 撰写手势、放大、缩小、移动和旋转

kotlin - 撰写导航后退按钮未显示

android - Jetpack 中是否有类似颤动的热重载?

android - 同一 Activity 中的 2 个 ListView

maven - Kotlin maven 插件编译顺序

android - 不能在两个不同的 View 上使用相同的 BindingAdapter

java - 如何使用 okhttp 添加适当的内容长度 header ?