Android,在theme.xml文件中设置工具栏样式
我正在尝试自定义我的应用程序中工具栏的外观 目标Android,在theme.xml文件中设置工具栏样式,android,material-design,android-toolbar,android-theme,Android,Material Design,Android Toolbar,Android Theme,我正在尝试自定义我的应用程序中工具栏的外观 目标 我想设置工具栏的标题颜色和背景颜色。 我读到了主题和风格是如何运作的,所以我尝试了一些解决方案。 我发现标题颜色由app:titleTextColor属性和android:background属性中的背景颜色管理 前提 要知道如何操作,就必须知道我们需要修改的小部件的样式是如何管理的 基本工具栏样式在小部件.MaterialComponents.Toolbar样式中定义,如下所示 ?属性/文本外观标题行6 ?android:attr/text
我想设置工具栏的标题颜色和背景颜色。
我读到了主题和风格是如何运作的,所以我尝试了一些解决方案。 我发现标题颜色由
app:titleTextColor
属性和android:background
属性中的背景颜色管理
前提
要知道如何操作,就必须知道我们需要修改的小部件的样式是如何管理的 基本工具栏样式在
小部件.MaterialComponents.Toolbar
样式中定义,如下所示
?属性/文本外观标题行6
?android:attr/textColorPrimary
?属性/文本外观副标题1
?android:attr/textColorSecondary
@尺寸/mtrl\u工具栏\u默认高度
@尺寸/mtrl\u工具栏\u默认高度
这里,titleTextColor
的值设置为?android:attr/textColorPrimary
因此,我的第一次尝试只是在我的应用程序主题中添加了ovverride of
android:textColorPrimary
属性
@颜色/紫色500
@颜色/紫色\u 700
@颜色/白色
@颜色/青色200
@颜色/青绿色700
@颜色/黑色
?attr/colorPrimaryVariant
@颜色/白色
结果:这是有效的
为了设置背景,我决定创建一个自定义工具栏样式来放置背景定义,所以我改变了我的主题,如下所示
...
@样式/我的工具栏样式
@颜色/白色
?属性/颜色初级
结果:这不起作用。已应用android:background
,但未应用android:textColorPrimary
直接在MyToolbarStyle
中设置titleTextColor
的值有效
?属性/颜色主要
?属性/颜色初级
我还尝试设置工具栏主题,在这里我覆盖了Android属性:textColorPrimary
,如下所示
?属性/颜色初级
@样式/基本主题
@颜色/白色
@颜色/白色
结果:这也不起作用
现在我对我的测试结果有点困惑
为什么不能在自定义样式中覆盖android:textColorPrimary。要应用
样式
,您可以使用(并且工具栏样式
属性将此样式应用于所有工具栏
)样式
属性:
<androidx.appcompat.widget.Toolbar
style="@style/MyToolbarStyle"
<androidx.appcompat.widget.Toolbar
android:theme="@style/MyToolbarThemeOverlay"
<style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar">
<item name="android:background">?attr/colorPrimary</item>
<item name="materialThemeOverlay">@style/MyToolbarThemeOverlay</item>
</style>
与
谢谢我修改了这个问题,添加了一个关于主题覆盖的示例。问题是,我在另一个主题中定义了android:textColorPrimary,并将此主题设置为“一切都不起作用”。@blow-Answer-updated。以一种你使用materialThemeOverlay而不是android的风格:你是如何发现这一点的?我在哪里可以找到推荐人?
<style name="MyToolbarThemeOverlay">
<item name="android:textColorPrimary">@color/white</item>
</style>
<style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar">
<item name="android:background">?attr/colorPrimary</item>
<item name="materialThemeOverlay">@style/MyToolbarThemeOverlay</item>
</style>