如何修改Material 3原生Top Appbar标题文字大小?
问题:Material3 原生TopAppBar无法修改标题文字大小
我开发的应用使用无需在布局中定义的原生Top Appbar,采用Material 3,所有Activity均使用自定义主题@style/Theme.MyApplication,主题定义如下:
<style name="Theme.MyApplication" parent="Theme.Material3.DayNight"> <item name="actionBarTheme">@style/ThemeOverlay.Actionbar</item> <item name="colorOnSurface">#FFF</item> <!-- Actionbar textcolor --> <item name="colorOnSurfaceVariant">#314962</item> <!-- ActionBar subtitle color --> </style> <style name="ThemeOverlay.Actionbar" parent="ThemeOverlay.Material3.Dark.ActionBar"> <!-- Native Appbar --> <item name="android:textColorPrimary">@color/colorAccent</item> </style>
目前通过这些样式可以自定义颜色,但无法修改标题文字大小。我尝试修改了以下属性,均未生效:
titleTextAppearancetitleTextStyletextAppearanceTitleLargetextAppearanceTitleMedium
根据Material3文档说明,应该通过重写titleTextStyle来实现,但这并不生效,求解决办法。
解决方案
针对Material3的原生TopAppBar(系统ActionBar),需要在**ActionBar的主题覆盖层(即你定义的ThemeOverlay.Actionbar)**中正确配置titleTextStyle,具体步骤如下:
- 修改
ThemeOverlay.Actionbar,添加titleTextStyle属性,指向自定义文字样式:
<style name="ThemeOverlay.Actionbar" parent="ThemeOverlay.Material3.Dark.ActionBar"> <item name="android:textColorPrimary">@color/colorAccent</item> <!-- 配置标题文字样式 --> <item name="titleTextStyle">@style/CustomActionBarTitleTextStyle</item> </style>
- 定义
CustomActionBarTitleTextStyle,继承Material3的基础标题样式后修改textSize:
<style name="CustomActionBarTitleTextStyle" parent="TextAppearance.Material3.TitleLarge"> <item name="android:textSize">22sp</item> <!-- 自定义标题大小,按需调整数值 --> <!-- 可额外修改其他属性,比如字重、颜色等 --> <item name="android:textStyle">bold</item> </style>
关键说明:
- 原生ActionBar的标题样式优先级由
actionBarTheme中的配置决定,必须在这个覆盖层主题内设置titleTextStyle,直接在Activity主题中设置不会生效。 - 自定义样式继承
TextAppearance.Material3.TitleLarge是因为Material3原生ActionBar标题默认使用该文本样式,这样能保留Material3的设计规范,仅修改需要的属性。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

