AppCompat 21工具栏的问题

时间:2015-03-21 17:44:56

标签: android toolbar android-theme android-appcompat material-design

所以我从使用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
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
 </activity>

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

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

活动正在扩展ActionBarActivity

此外,我注意到使用AppCompat库时所有内容都向上移动了一些。这是故意的吗?菜单按钮显示黑色,即使我选择了浅色主题。并且工具栏不会在其下方显示任何阴影,就像人们想要的香草材料一样。我该如何解决这些错误?

2 个答案:

答案 0 :(得分:3)

1.创建主题

<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.将其设置为活动

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

  1. 创建工具栏
  2. <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. 最后
    2. toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar);

      这是我的结果 enter image description here

答案 1 :(得分:1)

使用appcompat库时,你不应该使用这个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>