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

如何禁止团队使用Material 3 Compose的Button组件或标记其禁用?

禁止使用Material 3原生Button的实现方案

一、完全禁止访问(编译报错强制阻止)

最直接的方式是通过同名类覆盖+废弃注解,让团队成员无法正常使用Material3的Button:

  1. 在项目中创建与Material3 Button完全同名的类,包名必须为androidx.compose.material3:
package androidx.compose.material3

import androidx.compose.runtime.Composable

@Deprecated(
    message = "禁止使用Material3原生Button,请使用项目自定义的Button组件",
    level = DeprecationLevel.ERROR
)
@Composable
fun Button(
    onClick: () -> Unit,
    content: @Composable () -> Unit
) {
    error("当前组件已被禁用,请切换至项目自定义Button")
}

只要团队成员导入并使用androidx.compose.material3.Button,编译阶段就会直接抛出错误,强制其改用自定义组件。

注意:要确保这个类被项目所有模块依赖,比如放在公共基础模块中,让其他模块都能引用到。

二、添加“请勿使用”标记(警告提示)

如果不想完全阻断,仅做提示引导,可以调整废弃注解的级别为警告,甚至自动转发到自定义组件:

  1. 同样创建同名类,将废弃级别设为WARNING:
package androidx.compose.material3

import androidx.compose.runtime.Composable
import com.yourproject.ui.components.CustomButton // 替换为你的自定义Button路径

@Deprecated(
    message = "优先使用项目自定义的CustomButton组件,不推荐使用Material3原生Button",
    level = DeprecationLevel.WARNING
)
@Composable
fun Button(
    onClick: () -> Unit,
    content: @Composable () -> Unit
) {
    // 自动转发到自定义Button,兼容旧代码同时引导替换
    CustomButton(onClick = onClick, content = content)
}

这样成员使用原生Button时会收到编译警告,且代码实际运行时会调用自定义组件,实现平滑过渡。

三、进阶方案:自定义Lint规则

如果需要更灵活的检测(比如扫描全项目代码、自定义提示文案),可以编写自定义Lint规则:

  • 实现一个Lint检测器,扫描代码中是否引用了androidx.compose.material3.Button
  • 触发时抛出警告或错误,引导团队使用自定义组件
  • 将规则打包为Lint库,方便在多模块项目中统一配置

内容的提问来源于stack exchange,提问作者Cameron Henige

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:30:18