Kotlin中如何为Composable函数创建可组合其他注解的自定义注解?
问题解答
Jetpack Compose 完全支持这种合并多个注解功能的自定义组合注解实现,之前实现失败通常是元注解配置错误导致的。
自定义注解实现代码
import android.content.res.Configuration import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview // 给自定义注解添加正确的元注解,同时挂载需要合并的三个注解 @Target(AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.SOURCE) @Preview( uiMode = Configuration.UI_MODE_NIGHT_NO, showBackground = true, name = "Light Mode" ) @Preview( uiMode = Configuration.UI_MODE_NIGHT_YES, showBackground = true, name = "Dark Mode" ) @Composable annotation class MyComposablePreview
使用示例
和你预期的用法完全一致:
@MyComposablePreview fun CardPreview() { // 预览组件代码 }
常见失效原因
- 未配置
@Target(AnnotationTarget.FUNCTION):自定义注解默认作用域不包含函数,导致无法挂载到预览函数上 - 未配置
@Retention(AnnotationRetention.SOURCE):注解保留级别过低,Compose 预览工具无法识别注解 - 导入了错误的包:注意
Preview必须导入androidx.compose.ui.tooling.preview.Preview,Composable必须导入androidx.compose.runtime.Composable
内容的提问来源于stack exchange,提问作者Pierre Vieira
相关产品推荐
相关产品推荐

