AppCompat 21 工具栏的问题

Problems with AppCompat 21 Toolbar

所以我从使用 Material 主题更改为 AppCompat 以支持非 Lollipop 设备,我在使用 AppCompat 工具栏时遇到了一些问题。 首先,工具栏没有使用原色:

<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="wrap_content"
    android:background="?attr/colorPrimary"/>

主要颜色设置为:

<style name="AppTheme" parent="Theme.Base"/>

<style name="Theme.Base" parent="Theme.AppCompat.Light">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        <item name="android:colorAccent">@color/accent</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
</style>

我正在为我的 activity 使用这个主题:

<activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
 </activity>

我正在将工具栏添加到 Activity,如下所示:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Activity 正在扩展 ActionBarActivity

我还注意到在使用 AppCompat 库时所有内容都向上移动了一点。这是故意的吗?菜单按钮显示黑色,即使我选择了浅色主题。并且工具栏没有在其下方显示任何阴影,就像香草 material 那样。我该如何修复这些错误?

1.create 主题

<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>

     <style name="AppTheme2" parent="AppTheme.Base">
        <item name="colorPrimary">@color/ColorPrimary</item>
        <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
    </style>

2.set 到 activity

<activity android:name="OtherApp" android:theme="@style/AppTheme2" > </activity>

  1. 创建工具栏
<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>
  1. 最后

toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar);

这是我的结果

在使用 appcompact 库时你不应该这样使用 android:colorPrimary,它应该是 colorPrimary 看来你的风格有问题

<style name="AppTheme" parent="Theme.Base"/>

<style name="Theme.Base" parent="Theme.AppCompat.Light">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        <item name="android:colorAccent">@color/accent</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
</style>

改为

<style name="AppTheme" parent="Theme.Base"/>

<style name="Theme.Base" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>