工具栏项目颜色

时间:2015-09-29 18:53:17

标签: android material-design

我在我的应用程序的每个Activity使用工具栏类。 我有两个版本的工具栏布局,但它们只在TextView和EditText中有所不同,包含在RelativeLayout中。 这是toolbar.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:theme="@style/AppTheme.Toolbar"
android:popupTheme="@style/AppTheme.Toolbar.LightPopup"/>

我使用android:themeandroid:popupTheme属性玩了很多次,但通常会得到相同的结果(如下所示),而不是我需要的。

在AndroidManifest.xml中,所有活动都使用android:theme="@style/AppTheme"

最后,我的v21\styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">?android:attr/colorPrimary</item>
</style>

<style name="AppTheme.Toolbar.LightPopup"parent="ThemeOverlay.AppCompat.Light">
    <item name="android:background">@color/material_grey_200</item>
</style>

<style name="AppTheme.TextAppearance.ExtraLarge" parent="TextAppearance.AppCompat.Large">
    <item name="android:textSize">30sp</item>
</style>

这是我大部分时间都能得到的: Toolbar menu Toolbar item hint 注意文本蓝色背景。

相比之下,它在Youtube应用程序中的外观(以及许多其他应用程序,不仅仅来自Google) Youtube toolbar menu Youtube toolbar item hint

我希望至少使提示的背景保持一致(最好是灰色)。 如果可能,我还想控制弹出工具栏菜单的颜色。 我在SO中尝试了几种解决方案(特别是玩风格)并且我自己尝试了,但没有任何帮助。 如果您有任何想法如何解决,请与我分享。 提前谢谢。

UPD:除了我之外没有人回答这个问题,我最好接受我的回答,因为这对我很有帮助。 Hovewer,如果您有一些补充和澄清,请随时分享。例如,我仍然不知道为什么将android:theme更改为style修复所有内容。

1 个答案:

答案 0 :(得分:0)

我终于想出了自己的解决方案。 事实证明,修复我的工具栏布局需要两个步骤。 1)在工具栏xml布局中:

  • 删除最后一个属性
  • android:theme替换为style

这导致:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    style="@style/AppTheme.Toolbar"/>

2)在styles.xml文件中,将下一个项目添加到工具栏样式:

  • <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>(这将设置弹出窗口,就像上面的Youtube应用程序一样)
  • <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>(这会将标题和其他工具栏元素设置为白色)

同时删除工具栏弹出式样式。 结果如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
    </style>

    <style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:background">?android:attr/colorPrimary</item>
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
    </style>

    <style name="AppTheme.TextAppearance.ExtraLarge" parent="TextAppearance.AppCompat.Large">
        <item name="android:textSize">30sp</item>
    </style>
</resources>

我希望这会帮助某人,因为它帮助了我。