DrawerArrowStyle,工具栏中有windowActionBarOverlay颜色

时间:2015-01-08 12:30:56

标签: android android-appcompat android-toolbar

我已将Material Design应用到我的应用中,并且DrawerToggle windowActionBarOverlayDrawerArrowStyle的风格相混淆。

我在styles.xml设置了ToolBar,在设备上运行时,整个ToolBar的颜色不同:

透明windowActionBarOverlayenter image description here

有标题和动作: enter image description here

这只发生在Lollipop之前的设备上。我怀疑它与我的风格有一些兼容性,但直到现在我还无法弄清楚它是什么。

在我的其他风格(没有<style name="StyleOverlay" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowActionBarOverlay">true</item> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> <item name="windowActionBarOverlay">true</item> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="colorPrimary">@color/dark_blue</item> <item name="colorPrimaryDark">@color/primary_dark_blue</item> <item name="colorAccent">@color/orange</item> <item name="android:dialogTheme">@style/translucentDialog</item> </style> <style name="ThemeWithoutOverlay" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowContentOverlay">@null</item> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="colorPrimary">@color/dark_blue</item> <item name="colorPrimaryDark">@color/primary_dark_blue</item> <item name="colorAccent">@color/orange</item> <item name="android:dialogTheme">@style/translucentDialog</item> </style> <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="drawableSize">40dp</item> <item name="spinBars">true</item> <item name="color">@android:color/white</item> </style> <style name="ThemeToolbar" parent="Theme.AppCompat"> <item name="android:textColorPrimary">@android:color/white</item> <item name="colorPrimary">@color/dark_blue</item> <item name="colorPrimaryDark">@color/primary_dark_blue</item> <item name="colorAccent">@color/orange</item> </style> )中,它可以在任何设备中完美运行。

这是我的风格:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res/android"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeToolbar" />

我的布局工具栏:

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

在我的活动中:

{{1}}

有谁知道发生了什么事?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据Google Android文档,来自link

  

要避免在操作栏隐藏和显示时调整布局大小,可以为操作栏启用叠加模式。在叠加模式下,您的活动布局会使用所有可用空间,就像操作栏不在那里一样,系统会在布局前面绘制操作栏。这会遮盖顶部的一些布局,但现在当操作栏隐藏或显示时,系统无需调整布局大小,转换也是无缝的。

将windowactionbaroverlay设置为true将在操作栏上创建60%透明的黑色渐变。因此,您可以看到蓝色+(60%透明黑色)= BLUISH GREEN的颜色。抱歉我的颜色定义。

您需要在活动的父布局中设置一个额外的属性,即

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?android:attr/actionBarSize">
...</RelativeLayout>

如文档中所述。请参考。