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>