android - 如何在不更改新工具栏中的操作溢出菜单文本颜色的情况下更改标题文本和按钮颜色?

标签 android android-styles android-toolbar

我在我的项目中使用 android.support.v7.widget.Toolbar。默认情况下,在浅色主题中,它有黑色操作溢出菜单图标、黑色标题和黑色溢出菜单文本颜色,就像那样(不要看导航图标 - 它是自定义的):

Default Toolbar look like enter image description here

但在我的应用程序中,我需要它是白色的。 我在工具栏的样式中将 android:textColorPrimary 设置为白色:

<style name="Widget.My.Toolbar" parent="Widget.AppCompat.Toolbar">
    <item name="theme">@style/ThemeOverlay.My.Toolbar</item>
</style>

<style name="ThemeOverlay.My.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:textColorPrimary">@color/white</item>
</style>

它改变了标题和溢出菜单按钮的颜色,就像我想要的那样,但它也改变了 Action owerflow 菜单项文本颜色: enter image description here

看起来很丑。 我什至尝试以编程方式设置标题颜色

toolbar.setTitleTextColor(getResources.getColor(R.color.white);

但它只改变标题颜色,而不改变菜单按钮: enter image description here

那么除了操作溢出菜单中的项目之外,我该如何更改工具栏中所有内容的颜色?

最佳答案

Toolbar 设置文本颜色后,您可以使用以下属性设置菜单的文本颜色:

<item name="actionMenuTextColor">@color/white</item>

因为您使用的是 AppCompat Toolbar,所以 android 命名空间不需要包含在属性中,如上所示。

然而,人们似乎对此有不同的体验。您也可以尝试使用 itemTextAppearance 属性:

<style name="yourTheme" parent="yourThemeParent">
    <!-- Rest of your theme -->
    <item name="android:itemTextAppearance">@style/menuItemColor</item>
</style>

<style name="menuItemColor">
    <item name="android:textColor">@android:color/black</item>
</style>

当我在我的布局中明确包含一个 Toolbar 时,我发现第一个解决方案对我有用,但如果我使用 getSupportActionBar() 来获取包含的默认栏则不是在给定的主题中。但是,在这种情况下,第二种解决方案对我有用。

关于android - 如何在不更改新工具栏中的操作溢出菜单文本颜色的情况下更改标题文本和按钮颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242904/

相关文章:

java - 如何在 AM 和 PM 时间选择器中设置 12 小时格式?

Android AppCompat 模块 Activity 不使用 list 上定义的样式

android - 如何防止actionMode和工具栏在它们之间切换时变为 "jump"?

android - 无法写入 Android 中的 SQLite 数据库

java - 是否可以在 appWidget 中重用 RemoteView 而不是每次都创建新的?我该如何存储它们?

java - 如何在LayerList android的中心添加图像

android - AlertDialog 单选项填充

使用 SQLite 处理 Android 工具栏图标

android - AppBarLayout 奇怪地占用空间并将内容向下推

php - 将 Laravel 应用程序连接到 Android