ANDROIDX / COMPOSE / MATERIAL 3
接入与版本
用最小配置接入当前源码基线对应的 Compose Material 3,并理解 alpha 版本边界。
当前基线
你的 AndroidX checkout 中,libraryversions.toml 声明:
COMPOSE_MATERIAL3 = "1.5.0-alpha25"对应依赖可以写成:
implementation("androidx.compose.material3:material3:1.5.0-alpha25")如果项目通过 Compose BOM 管理版本,则保留 BOM,不要再给 material3 单独写版本;先确认 BOM 实际解析出的 Material 3 版本包含你要用的 API。
实验 API 怎么处理
源码定义了 ExperimentalMaterial3ExpressiveApi,其说明明确写着:API 可能变化或被移除。只有编译器提示到具体 API 时,再把 opt-in 放到最小范围:
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
fun ExpressiveScreen() {
// 使用实验 API 的内容
}不要因为“这是 M3E 页面”就给整个项目全局 opt-in。当前源码中,MaterialExpressiveTheme 本身并未标这个注解,但部分尺寸、组件或辅助 API 会要求它。
最小入口
@Composable
fun App() {
MaterialExpressiveTheme {
AppContent()
}
}这一步会改变主题提供的默认值,但不会让所有旧组件重载自动启用所有 Expressive 行为。例如按钮按压变形仍要使用接收 ButtonShapes 的重载。
下一步
先读主题到底注入什么,再看按钮为什么要显式传 shapes。
源码依据
- 版本:
libraryversions.toml:29 - 实验标记:
ExperimentalMaterial3ExpressiveApi.kt:19-24 - 主题实现:
MaterialTheme.kt:261-287