我可以用代码A在Android Studio向导自动生成的Color.kt文件中定义 colored颜色 ,没关系.

我希望定义一个基于 colored颜色 的MaterialTheme.colors,但是代码B返回以下错误.

@Composable invocations can only happen from the context of a @Composable function

目前我还得用C代码,不是很好,有没有更好的办法?

Code A

val IconColor = Color(0xFF2E7D32)

Code B

val IconColor = MaterialTheme.colors.onSurface.copy(alpha = 0.76f)

Code C

@Composable
fun IconColor(): Color {
    return MaterialTheme.colors.onSurface.copy(alpha = 0.76f)
}

推荐答案

之所以会这样,是因为这个字段的Getter使用了@compsable作用域,所以我找到了两种方法,可以在Colors.kt中以您想要的方式声明变量.

1:

val IconColor1: @Composable () -> Color = { MaterialTheme.colors.onSurface.copy(alpha = 0.76f) }

2:

val IconColor2: Color @Composable get() = MaterialTheme.colors.onSurface.copy(alpha = 0.76f)

我希望这对????有帮助

Android相关问答推荐

有没有办法知道每台安卓设备上的通知限制?

RemoteActivityHelper.startRemoteActivity不适用于Android Wear OS 4模拟器

LocalContext.current的问题(@Composable调用只能从@Composable函数的上下文发生)

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

从惰性列中删除项目时Jetpack Compose崩溃

是否可以附加事件处理程序,如onClick,拖动到Canvas Composable中绘制的内容,或使用drawBehind修饰符?

如何在Jetpack Compose中向SearchBar添加边框

如何在卡片视图右侧添加箭头

如何在另一个函数中初始化主类参数? (我是初学者)代码推荐

请求访问小部件中的位置权限

以下代码如何在 Android 上运行

用作输入参数的 Lambda 函数导致重组

在 Jetpack Compose 中自动滚动后面的项目

在移动设备上看到时如何增加 PasswordField 文本?

记住或不记得derivedStateOf

清洁架构中的服务

Gradle 构建错误:找不到 semver4j-0.16.4-nodeps.jar

如何使用 ConstraintLayout 链接两个文本

创建后文件不存在

Android Studio 与物理设备断开连接