我已将Material Design应用到我的应用中,并且DrawerToggle
windowActionBarOverlay
与DrawerArrowStyle
的风格相混淆。
我在styles.xml
设置了ToolBar
,在设备上运行时,整个ToolBar
的颜色不同:
透明windowActionBarOverlay
:
有标题和动作:
这只发生在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}}
有谁知道发生了什么事?
谢谢!
答案 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>
如文档中所述。请参考。