You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:39:03