0
点赞
收藏
分享

微信扫一扫

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


首先看图




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


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​​从源码分析可得知,



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


image.png



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


image.png


在​​readTextAppearance​​方法中



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


image.png


解析了textsize

case com.android.internal.R.styleable.TextAppearance_textSize:
attributes.mTextSize =

举报

相关推荐

0 条评论