Android Composable Text接收Color参数时预览失效,有什么解决办法?
Compose预览渲染异常修复方案
问题原因
这是Bumblebee 2021.1.1 Canary 11及更早版本Android Studio的已知兼容性bug,预览工具无法正确识别带Kotlin默认参数的@Preview注解Composable函数,反射调用时找不到无参重载方法,就会抛出异常或加载失败:Arctic Fox稳定版会直接抛出MethodNotFoundError,金丝雀版本会提示无法找到View。
可行修复方案
- 方案1:拆分预览入口和业务组件
单独定义无入参的预览函数,业务组件保留原有参数定义即可,修改后代码如下:// 仅作为预览入口,无任何入参 @Preview @Composable fun ColoredTextPreview() = ColoredText() // 原有业务组件,不受影响 @Composable fun ColoredText(color: Color = Color.Red) = Text("text") - 方案2:给预览函数添加
@JvmOverloads注解
该注解会强制Kotlin编译器生成无参重载方法,供预览器调用,修改后代码如下:@Preview @Composable @JvmOverloads fun ColoredText(color: Color = Color.Red) = Text("text") - 方案3:升级开发环境
升级Android Studio到Bumblebee 2021.1.1 Canary 12及更高版本,同时将项目Compose依赖版本升级到1.1.0-alpha06及以上,该bug已在后续版本官方修复。
内容的提问来源于stack exchange,提问作者JaviCasa
相关产品推荐
相关产品推荐

