当我在应用程序中打开溢出菜单时,在整个进入/退出动画中,我看到菜单本身后面显示的菜单背景颜色的实心矩形。这是一个显示此动画的动画(速度减慢到75%):
这个无关的彩色矩形的存在破坏了漂亮的进/出动画!如何在保留所有其他Toolbar
样式的同时将其删除?
研究
我已经阅读了关于SO Toolbar
样式的一堆答案,以及Chris Banes关于这个主题的帖子。似乎在style
/ theme
基础上使用View
/ <resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@color/colorPrimary</item>
</style>
</resources>
标签在过去的几年中发生了变化,这使得很难在任何地方找到确切的信息。
我使用支持库的22.1.0到23.2.0(包括)版本重现了这一点。
应用文件
styles.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:style="@style/ToolbarStyle" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
activity_main.xml中
Window
运行时视图分析
作为@Commonsware suggested,我在运行时查看了视图层次结构。在结果中编辑:
菜单已折叠(存在溢出按钮,没有神秘的额外矩形):
扩展了菜单(溢出菜单视图显示在单独的Window
中):
比较两个菜单(稳定)状态时,主应用程序视图层次结构(在原始allData = input('Introduce a variable name:','s');
matfilename = sprintf('xcross_%d_%s.mat', names(k), allData);
中显示)保持不变。因此我的猜测是,在菜单动画期间,额外的矩形会临时添加到主应用程序的窗口中,并在完成后立即删除。我不确定为什么这样做 - 也许这是一个显示和隐藏溢出菜单的旧(现在未使用)方法的宿醉?如果我的推论是正确的,那么如果我们能够确定如何防止这种短暂的行为,那么这个问题就可以得到解决......
答案 0 :(得分:3)
style =工具栏的本地
theme =全局到工具栏中充斥的所有内容
根据上面的帖子,您在android:background
中设置的android:theme
属性是动画期间额外背景颜色的原因。
我直接将background
设置为toolbar
并使用android:colorBackground
属性设置弹出窗口的背景颜色。动画似乎工作正常。
<强>代码:强>
<强> activity_main.xml中强>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:theme="@style/CustomToolbarTheme" />
<强> styles.xml 强>
<style name="CustomToolbarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:colorBackground">@color/colorPrimary</item>
<item name="android:textColorPrimary">@android:color/white</item>
</style>