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

如何在Material3中自定义MaterialToolbar及弹出菜单样式?

Material3自定义MaterialToolbar及弹出菜单样式解决方案

1. 定义Toolbar专属主题

在res/values/styles.xml中添加Toolbar的独立主题,单独控制其背景色和图标/标题颜色:

<style name="ToolbarTheme" parent="ThemeOverlay.Material3.ActionBar">
    <!-- 设定Toolbar背景色为#1d95fe -->
    <item name="colorPrimary">#1d95fe</item>
    <!-- 设定Toolbar图标、标题文字为白色 -->
    <item name="colorOnPrimary">@android:color/white</item>
</style>

2. 定义弹出菜单样式

同样在styles.xml中添加弹出菜单的样式,控制背景和文字颜色:

<style name="PopupMenuStyle" parent="Widget.Material3.PopupMenu">
    <!-- 弹出菜单背景色设为白色 -->
    <item name="android:background">@android:color/white</item>
    <!-- 菜单文字颜色设为黑色 -->
    <item name="android:textColor">@android:color/black</item>
    <!-- 可选:添加分割线样式 -->
    <item name="android:divider">@android:color/darker_gray</item>
    <item name="android:dividerHeight">1dp</item>
</style>

3. 布局中应用样式

修改MaterialToolbar布局代码,通过app:theme和app:popupTheme分别关联上述两个样式:

<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/ToolBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:title="@string/app_name"
    app:theme="@style/ToolbarTheme"
    app:popupTheme="@style/PopupMenuStyle"/>

原理说明

通过app:theme为Toolbar单独设置主题,仅影响Toolbar自身的颜色体系,不会干扰全局主题;再通过app:popupTheme专门控制弹出菜单的样式,彻底解决之前图标颜色与弹出菜单样式冲突的问题,完全基于Material3设计规范实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:42:44