样式工具栏无法使用AppCompat

时间:2015-08-13 12:40:53

标签: android android-support-library

我尽我所能在我的应用中设置ActionBar(即android.support.v7.widget.Toolbar)的样式,但它不起作用。在尝试实现此目的时,我正在关注official documentation我真正要做的是将标题颜色设为白色。目前显示为黑色。我的目标API是11。

我做错了什么?

RES /值/的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

<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"/>

Activity

// Setup main Toolbar
Toolbar toolbar = (Toolbar) mInflatedActivity.findViewById(R.id.mm_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

我已经尝试了我能想到的所有内容并在网上进行了大量搜索,但我无法使其发挥作用。我错过了什么?

当前结果是(永远不要搜索搜索图标):

enter image description here

style="@style/MMActionBar"添加到android.support.v7.widget.Toolbar的xml属性中会产生以下结果:

enter image description here

将主要父主题更改为Theme.AppCompat.Light.DarkActionBar不会做任何事情。

2 个答案:

答案 0 :(得分:4)

只需在你的布局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" />

将xml本身的主题设置为ThemeOverlay.AppCompat.Dark.ActionBar,这将使标题文字变为白色。

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:主题声明将确保您的文字和项目   使用纯色(即100%不透明白色)。

答案 1 :(得分:0)

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

<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>