如何创建使用Material 3默认主题的Android项目?
获取默认Material 3主题的实操步骤
1. 切换到Material 3依赖
在模块级build.gradle(或build.gradle.kts)中,替换Material依赖:
- 移除Material 2依赖:
implementation 'com.google.android.material:material:<旧版本号>' - 添加Material 3稳定版依赖:
implementation 'com.google.android.material:material:1.11.0'(可替换为最新稳定版) - 点击"Sync Now"同步项目。
2. 新建Material 3主题文件
备份并删除原有的Material 2主题文件,在res/values和res/values-night目录下分别创建新的themes.xml:
日间主题(values/themes.xml)
<resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.YourAppName" parent="Theme.Material3.DayNight.NoActionBar"> <!-- 主色调 --> <item name="colorPrimary">@color/md_theme_light_primary</item> <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item> <item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item> <item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item> <!-- 次色调 --> <item name="colorSecondary">@color/md_theme_light_secondary</item> <item name="colorOnSecondary">@color/md_theme_light_onSecondary</item> <item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item> <item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item> <!-- 第三色调 --> <item name="colorTertiary">@color/md_theme_light_tertiary</item> <item name="colorOnTertiary">@color/md_theme_light_onTertiary</item> <item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item> <item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item> <!-- 背景与表面色 --> <item name="colorBackground">@color/md_theme_light_background</item> <item name="colorOnBackground">@color/md_theme_light_onBackground</item> <item name="colorSurface">@color/md_theme_light_surface</item> <item name="colorOnSurface">@color/md_theme_light_onSurface</item> <item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item> <item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item> <!-- 错误色 --> <item name="colorError">@color/md_theme_light_error</item> <item name="colorOnError">@color/md_theme_light_onError</item> <item name="colorErrorContainer">@color/md_theme_light_errorContainer</item> <item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item> <!-- 轮廓与系统栏 --> <item name="colorOutline">@color/md_theme_light_outline</item> <item name="android:navigationBarColor">@color/md_theme_light_surface</item> <item name="android:statusBarColor">@color/md_theme_light_surface</item> <item name="android:windowLightStatusBar" tools:targetApi="m">true</item> </style> </resources>
夜间主题(values-night/themes.xml)
<resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.YourAppName" parent="Theme.Material3.DayNight.NoActionBar"> <!-- 主色调 --> <item name="colorPrimary">@color/md_theme_dark_primary</item> <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item> <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item> <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item> <!-- 次色调 --> <item name="colorSecondary">@color/md_theme_dark_secondary</item> <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item> <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item> <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item> <!-- 第三色调 --> <item name="colorTertiary">@color/md_theme_dark_tertiary</item> <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item> <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item> <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item> <!-- 背景与表面色 --> <item name="colorBackground">@color/md_theme_dark_background</item> <item name="colorOnBackground">@color/md_theme_dark_onBackground</item> <item name="colorSurface">@color/md_theme_dark_surface</item> <item name="colorOnSurface">@color/md_theme_dark_onSurface</item> <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item> <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item> <!-- 错误色 --> <item name="colorError">@color/md_theme_dark_error</item> <item name="colorOnError">@color/md_theme_dark_onError</item> <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item> <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item> <!-- 轮廓与系统栏 --> <item name="colorOutline">@color/md_theme_dark_outline</item> <item name="android:navigationBarColor">@color/md_theme_dark_surface</item> <item name="android:statusBarColor">@color/md_theme_dark_surface</item> <item name="android:windowLightStatusBar" tools:targetApi="m">false</item> </style> </resources>
3. 添加Material 3默认颜色资源
在res/values目录下创建colors.xml,填入官方默认的Material 3色值:
<resources> <!-- 日间主题色 --> <color name="md_theme_light_primary">#6750A4</color> <color name="md_theme_light_onPrimary">#FFFFFF</color> <color name="md_theme_light_primaryContainer">#EADDFF</color> <color name="md_theme_light_onPrimaryContainer">#21005D</color> <color name="md_theme_light_secondary">#625B71</color> <color name="md_theme_light_onSecondary">#FFFFFF</color> <color name="md_theme_light_secondaryContainer">#E8DEF8</color> <color name="md_theme_light_onSecondaryContainer">#1D192B</color> <color name="md_theme_light_tertiary">#7D5260</color> <color name="md_theme_light_onTertiary">#FFFFFF</color> <color name="md_theme_light_tertiaryContainer">#FFD8E4</color> <color name="md_theme_light_onTertiaryContainer">#31111D</color> <color name="md_theme_light_error">#B3261E</color> <color name="md_theme_light_onError">#FFFFFF</color> <color name="md_theme_light_errorContainer">#F9DEDC</color> <color name="md_theme_light_onErrorContainer">#410E0B</color> <color name="md_theme_light_background">#FFFBFE</color> <color name="md_theme_light_onBackground">#1C1B1F</color> <color name="md_theme_light_surface">#FFFBFE</color> <color name="md_theme_light_onSurface">#1C1B1F</color> <color name="md_theme_light_surfaceVariant">#E7E0EC</color> <color name="md_theme_light_onSurfaceVariant">#49454F</color> <color name="md_theme_light_outline">#79747E</color> <!-- 夜间主题色 --> <color name="md_theme_dark_primary">#D0BCFF</color> <color name="md_theme_dark_onPrimary">#381E72</color> <color name="md_theme_dark_primaryContainer">#4F378B</color> <color name="md_theme_dark_onPrimaryContainer">#EADDFF</color> <color name="md_theme_dark_secondary">#CCC2DC</color> <color name="md_theme_dark_onSecondary">#332D41</color> <color name="md_theme_dark_secondaryContainer">#4A4458</color> <color name="md_theme_dark_onSecondaryContainer">#E8DEF8</color> <color name="md_theme_dark_tertiary">#EFB8C8</color> <color name="md_theme_dark_onTertiary">#492532</color> <color name="md_theme_dark_tertiaryContainer">#633B48</color> <color name="md_theme_dark_onTertiaryContainer">#FFD8E4</color> <color name="md_theme_dark_error">#F2B8B5</color> <color name="md_theme_dark_onError">#601410</color> <color name="md_theme_dark_errorContainer">#8C1D18</color> <color name="md_theme_dark_onErrorContainer">#F9DEDC</color> <color name="md_theme_dark_background">#1C1B1F</color> <color name="md_theme_dark_onBackground">#E6E1E5</color> <color name="md_theme_dark_surface">#1C1B1F</color> <color name="md_theme_dark_onSurface">#E6E1E5</color> <color name="md_theme_dark_surfaceVariant">#49454F</color> <color name="md_theme_dark_onSurfaceVariant">#CAC4D0</color> <color name="md_theme_dark_outline">#938F99</color> </resources>
4. 更新Manifest中的主题引用
打开AndroidManifest.xml,确保application标签使用新的Material 3主题:
<application ... android:theme="@style/Theme.YourAppName"> ... </application>
5. 清理Material 2遗留代码
- 删除旧的Material 2主题文件、颜色文件
- 检查布局文件,替换Material 2专属属性(如部分过时的
app:style)为Material 3对应属性 - 移除所有未使用的Material 2相关依赖和代码引用
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

