material2迁移到material3

区别

区别就是m3比m2好看(不是

image

官网扒出来的对迁移有阻碍的API

缺少的 API:

M2 M3
androidx.compose.material.swipeable 目前无法添加文件
已替换的 API:

M2 M3
androidx.compose.material.BackdropScaffold 无 M3 等效项,请改用 Scaffold 或 BottomSheetScaffold
androidx.compose.material.BottomDrawer 无 M3 等效项,请改用 ModalBottomSheet

重命名的 API:

M2 M3
androidx.compose.material.BottomNavigation androidx.compose.material3.NavigationBar
androidx.compose.material.BottomNavigationItem androidx.compose.material3.NavigationBarItem
androidx.compose.material.Chip androidx.compose.material3.AssistChip 或 androidx.compose.material3.SuggestionChip
androidx.compose.material.ModalBottomSheetLayout androidx.compose.material3.ModalBottomSheet
androidx.compose.material.ModalDrawer androidx.compose.material3.ModalNavigationDrawer

具体流程和操作

添加 M3 依赖项和 M2 依赖项。
添加 M3 版应用主题和 M2 版应用主题。
将各个模块、屏幕或可组合项迁移至 M3,具体取决于应用的大小和复杂程度(如需了解详情,请参阅下文)。
完全迁移后,请移除 M2 版应用主题。
移除 M2 依赖项。
PS:主 M2 和 M3 库以外的其他 Material 依赖项未发生更改。它们结合使用 M2 和 M3 软件包及版本,但这对迁移没有任何影响。它们可以按原样与 M3 配合使用:
库 软件包和版本
Compose Material 图标 androidx.compose.material:material-icons-*:$m2-version
Compose Material Ripple 构成材料涟漪 androidx.compose.material:material-ripple:$m2-version

更换依赖

implementation "androidx.compose.material:material:$m2-version"
->
implementation "androidx.compose.material3:material3:$m3-version"

更换颜色

import androidx.compose.material3.lightColorScheme
import androidx.compose.material3.darkColorScheme

调用这两个方法lightColorScheme( darkColorScheme(
可以这样把变量写外面

val AppLightColorScheme = lightColorScheme(
    // M3 light Color parameters
)
val AppDarkColorScheme = darkColorScheme(
    // M3 dark Color parameters
)
val AppColorScheme = if (darkTheme) {
    AppDarkColorScheme
} else {
    AppLightColorScheme
}

注意要更换导航栏,sideMenu也需要修改

M2 Scaffold 中的所有 drawer* 参数都已从 M3 Scaffold 中移除。其中包括 drawerShape 和 drawerContent 等参数。如需使用 M3 Scaffold 显示抽屉式导航栏,请改用抽屉式导航栏可组合项(如 ModalNavigationDrawer)

posted @ 2026-03-19 23:46  气温骤降  阅读(15)  评论(0)    收藏  举报