【原创】基于主题规范写法修改actionBar高度写法和标题字体大小

本文介绍了如何在Android应用中自定义ActionBar的大小和样式,通过修改根主题属性实现全局替换,以及针对XML声明的Toolbar进行字体大小调整。使用MaterialComponents主题,并创建自定义样式如MyActionBarStyle和MyTitleTextStyle,通过titleTextAppearance来控制标题字体大小。
摘要由CSDN通过智能技术生成

首先看图

image.png

可以看出来就是 当前主题 选择的手机是56dp
actionBarSize,
规范是啥,规范就是使用appcompat主题 material design咯

我的各种颜色主题都继承于我的根主题

<style name="Theme.MyApplication" parent="Theme.MyApplication.RootTheme">

所以只需要修改根主题属性即可实现

<style name="Theme.MyApplication.RootTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="actionBarStyle" >@style/MyActionBarStyle</item>
        <item name="actionBarSize">@dimen/my_app_action_bar_size</item>

全局赋值默认属性修改actionBar高度

actionBarSize 设置了之后就会替换掉所有?attr/actionBarSize

  1. 替换主题的
<style name="Theme.MyApplication.RootTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
       <item name="actionBarSize">@dimen/my_app_action_bar_size</item>
  1. 替换解决toolbar的
    直接写上 ?attr/actionBarSize就行
<androidx.appcompat.widget.Toolbar
            android:id="@+id/toolBar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            style="@style/ToolbarStyle"
            app:layout_scrollFlags="scroll|enterAlways"
            app:title="@string/app_name"
            app:titleTextColor="@android:color/white" />

修改toolbar标题字体大小

  1. 主题全局替换
    此方法针对没有在xml中定义toolbar或者setSupportToolbar的情况
<!-- ActionBar 样式 -->
    <style name="MyActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="titleTextStyle">@style/MyTitleTextStyle</item>
    </style>
    <style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
        <item name="android:textColor">@android:color/holo_blue_bright</item>
        <item name="android:textSize">@dimen/toolbar_text_size</item>
    </style>
    <style name="Theme.MyApplication.RootTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="actionBarStyle" >@style/MyActionBarStyle</item>
    </style>
  1. 解决xml中声明的toolbar问题

用xml写的toolbar发现字体大小并没有生效,这时候需要用到style="@style/ToolbarStyle"->titleTextAppearance

<androidx.appcompat.widget.Toolbar
            android:id="@+id/toolBar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            style="@style/ToolbarStyle"
            app:layout_scrollFlags="scroll|enterAlways"
            app:title="@string/app_name"

 />
<style name="ToolbarStyle">

        <item name="android:background">?attr/defaultThemeColor</item>
        <item name="titleTextAppearance">@style/MyActionBarTabText</item>

    </style>

为什么是titleTextAppearance从源码分析可得知,

image.png
image.png

readTextAppearance方法中

image.png

解析了textsize
case com.android.internal.R.styleable.TextAppearance_textSize:
                    attributes.mTextSize =
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值