【问题标题】:Toolbar's custom text color is not used未使用工具栏的自定义文本颜色
【发布时间】:2016-09-01 11:27:28
【问题描述】:

我正在尝试在我的应用中自定义 ActionBar。我想改变背景颜色和文字颜色。

我的styles.xml如下:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme.NoActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>

        <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/AppTheme.ActionBar</item>
    </style>

    <style name="AppTheme.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
        <item name="android:background">@color/actionbar_background</item>
        <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>

        <!-- Support library compatibility -->
        <item name="background">@color/actionbar_background</item>
        <item name="titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="AppTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/actionbar_text_color</item>
    </style>

</resources>

在我的AndroidManifest.xml 中,我添加了android:theme="@style/AppTheme.NoActionBar"。在我的活动中,我添加了带有代码的操作栏

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/AppTheme.ActionBar" />

结果我的操作栏颜色正确但文本颜色不正确。

怎么了?

注意: 我正在使用 AppCompat,而不是 Holo 或其他。

【问题讨论】:

  • MyActionBar 样式在哪里?请使用该样式更新问题。
  • @Sufian 哦,对不起。已更新。
  • 目前文字颜色是白色还是黑色(在ActionBar上)?
  • 它是黑色的。我尝试设置另一个。

标签: android android-appcompat android-toolbar android-styles


【解决方案1】:

这是因为您的 Toolbar 的主题设置为浅色,因此 Android 选择了深色(黑色)文本颜色。

您需要将其更新为以下内容:

<style name="AppTheme.ActionBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="titleTextColor">#FF0001</item>
    <item name="subtitleTextColor">#FF0001</item>
    <!-- your other theme attributes -->
</style>

注意事项:

  1. 对于Toolbar 主题,使用ThemeOverlay 而不是Theme.AppCompat。相关 - When should one use Theme.AppCompat vs ThemeOverlay.AppCompat?,
  2. 用你喜欢的任何颜色替换#FF0001。这是标题文本的颜色。

【讨论】:

  • 只有文字颜色?还是返回箭头?
  • 嗯。我在操作栏上没有看到任何“后退箭头”。
  • 谢谢,它有效。而且&lt;item name="android:titleTextStyle"&gt;@style/AppTheme.ActionBar.TitleTextStyle&lt;/item&gt; 行现在没用了,不是吗?
  • 还有一个问题。我发现我的操作栏弹出菜单现在很暗,上面的文字颜色相同。这让我悲伤。如果您知道如何解决它,请告诉。
  • @ziwert 您需要将此行添加到 XML 中的 Toolbarapp:popupTheme="@style/ThemeOverlay.AppCompat.Light"。这意味着您的弹出窗口将使用浅色主题。
【解决方案2】:

也许你应该删除 actionBarTabTextStyle 来自 AppTheme.NoActionBar

希望对您有所帮助...

【讨论】:

    【解决方案3】:

    为什么不直接使用

    <item name="android:textColor">@color/blue</item> 
    

    在您的自定义 MyActionBar 样式定义中。

    【讨论】:

      【解决方案4】:

      我使用 android:theme 而不是 app:theme,这对我有用。

      试一试。

      <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      android:theme="@style/MyActionBar" />              <----------Here
      

      【讨论】:

      • 我认为这应该可以解决它.. titleTextColor 而不是 textColor &lt;style name="MyActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"&gt; &lt;item name="android:titleTextColor"&gt;@color/actionbar_text_color&lt;/item&gt; &lt;/style&gt;
      【解决方案5】:

      可以通过java代码改变ActionBar的文字和背景颜色

      yourToolbar.setTitleTextColor(Color.WHITE); yourToolbar.setBackgroundColor(Color.YOUR_COLOR);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        相关资源
        最近更新 更多