带有浅色应用程序主题的深色工具栏

Dark Toolbar with Light App Theme

我知道这个问题以前有人问过,它以前对我有用,但是在更新到 App Compat 修订版 23 之后,工具栏现在有一个黑色文本颜色(我想要它是白色的)而且我没有改变一件事。

Toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    >

</android.support.v7.widget.Toolbar>

styles.xml

<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="@attr/spinner_style">@style/spinner_style</item>
</style>

将工具栏设置为 activity:

 Toolbar Toolbar = (Toolbar) AppCompatActivity.findViewById(R.id.toolbar);
 AppCompatActivity.setSupportActionBar(Toolbar);
 ActionBar actionBar = ((AppCompatActivity)activity).getSupportActionBar();
 actionBar.setTitle(title);

改变

local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

Studio 在默认项目模板中引入的新支持库 (AppCompat) Android 不会插入重要的属性来为旧 Android 版本中的工具栏设置样式。

这对我有用(我正在使用带有工具栏和 TabLayout 的 AppBarLayout,如图所示):

<android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            android:theme="@style/AppTheme.AppBarOverlay" <!-- Needed attribute -->
            app:popupTheme="@style/AppTheme.PopupOverlay" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:theme="@style/AppTheme.AppBarOverlay" <!-- Needed attribute -->
            app:tabGravity="fill"
            app:tabMode="fixed" />

    </android.support.design.widget.AppBarLayout>

我没有研究以了解这里到底发生了什么,但较早的 Android 版本确实需要为每个元素设置主题样式。

希望它能帮助那些试图找到解决浅色工具栏主题中黑色文本问题的人!