Android 使用AppCompat无法设置工具栏样式

Android 使用AppCompat无法设置工具栏样式,android,android-support-library,Android,Android Support Library,我正在尽我所能在我的应用程序中设计操作栏(即android.support.v7.widget.Toolbar),但它就是不起作用。当我试图实现这一目标时,我遵循着这一原则我真正想做的是将标题颜色设置为白色。它当前显示为黑色。我的目标API是11 我做错了什么 res/values/themes.xml <resources> <!-- Base theme applied no matter what API --> <style name="M

我正在尽我所能在我的应用程序中设计
操作栏
(即
android.support.v7.widget.Toolbar
),但它就是不起作用。当我试图实现这一目标时,我遵循着这一原则我真正想做的是将标题颜色设置为白色。它当前显示为黑色。我的目标API是11

我做错了什么

res/values/themes.xml

<resources>

    <!-- Base theme applied no matter what API -->
    <style name="MMTheme.Base" parent="Theme.AppCompat.Light">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>

        <item name="android:textColor">@color/mm_dark_gray</item>
        <item name="colorPrimary">@color/mm_brown</item>
        <item name="colorPrimaryDark">@color/mm_dark_gray</item>
        <item name="colorAccent">@color/mm_green</item>

        <item name="android:actionBarStyle">@style/MMActionBar</item>
        <item name="android:actionBarTabTextStyle">@style/MMActionBarTabText</item>
        <item name="android:actionMenuTextColor">@color/mm_green</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MMActionBar</item>
        <item name="actionBarTabTextStyle">@style/MMActionBarTabText</item>
        <item name="actionMenuTextColor">@color/mm_green</item>
    </style>

    <style name="MMTheme" parent="MMTheme.Base"></style>

    <!-- ActionBar style -->
    <style name="MMActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:background">@color/mm_green</item>

        <item name="android:titleTextStyle">@style/MMActionBarTitleText</item>

        <!-- Support library compatibility -->
        <item name="titleTextStyle">@style/MMActionBarTitleText</item>
    </style>

    <!-- ActionBar title text -->
    <style name="MMActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/mm_white</item>
        <!-- The textColor property is backward compatible with the Support Library -->
    </style>

    <!-- ActionBar tabs text -->
    <style name="MMActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
        <item name="android:textColor">@color/mm_green</item>
        <!-- The textColor property is backward compatible with the Support Library -->
    </style>

</resources>
活动中

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mm_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"/>
// Setup main Toolbar
Toolbar toolbar = (Toolbar) mInflatedActivity.findViewById(R.id.mm_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
我已经尝试了我能想到的一切,并且在网上搜索了很多,但是我不能让它工作。我错过了什么

当前结果为(无论搜索图标为何):

style=“@style/MMActionBar”
添加到
android.support.v7.widget.Toolbar
的xml属性会导致以下结果:


将主父主题更改为
theme.AppCompat.Light.darkaActionBar
没有任何作用。

只需在布局xml中使用它即可

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/red600"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
我想这是主题工具栏的正确方式,因为根据Android开发者的官方博客

工具栏的样式设置与标准操作栏不同,并且 直接设置到视图上

当你使用工具栏时,你应该使用一个基本的样式 作为您的操作栏:

<android.support.v7.widget.Toolbar  
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

app:theme声明将确保您的文本和项目 使用纯色(即100%不透明度白色)


我也面临同样的问题。下面的解决方案解决了我的问题。 为此,您需要在两个位置进行更改

1.像这样修改工具栏xml

<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/ColorPrimary"
android:elevation="2dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
    android:id="@+id/TV_tool_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My App Name"
    android:textSize="18sp"
    android:textColor="#FFFFFF"/>
</android.support.v7.widget.Toolbar>

就这样。这将使您的标题颜色为白色。干杯

使用此选项更改工具栏上字母的颜色:

<android.support.v7.widget.Toolbar      
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="4dp"
>

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


然后创建一个工具栏布局..并将其交给您的工具栏。这样做的同时保持
style=“@style/MMActionBar”
提供所需的颜色。这真的是应该这样做吗?我引用的官方文档使用了
等等,这似乎没有什么作用。为什么不起作用呢?在使用工具栏时,我通常无法使android:actionBarStyle属性起作用,所以我切换到了这种方法,似乎这种方式非常常见。看看这个Android开发者的官方博客,他们也在使用同样的技术。所以我想这是正确的方法@OP我想,如果我的解决方案解决了您的问题,您应该投票并将答案标记为已解决。这也是一个可行的解决方案,尽管
工具栏
标题已被删除并由我们自己处理。如果你想要黑色或白色以外的东西,或者任何一开始主题给你的东西,这似乎更容易。
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
<android.support.v7.widget.Toolbar      
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="4dp"
>

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