gpt4 book ai didi

android - 从溢出菜单进入/退出动画中删除额外的背景颜色矩形?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:55 25 4
gpt4 key购买 nike

当我在我的应用程序中打开溢出菜单时,我看到在整个进入/退出动画过程中菜单本身后面显示了一个菜单背景颜色的实心矩形。这是显示此内容的动画(速度减慢到 75%):

这个无关的彩色矩形的存在破坏了漂亮的进入/退出动画!如何在保留所有其他 Toolbar 样式的同时删除它?


研究

我在 SO 上阅读了很多关于 Toolbar 样式的答案,以及 Chris Banes 自己关于该主题的帖子。似乎在过去几年中,style/theme 标签在每个View 基础上的使用发生了变化,这使得它变得困难随时随地查找权威信息。

我使用支持库的 22.1.0 到 23.2.0(含)版本复制了这个。


应用文件

styles.xml

<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>

activity_main.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>

运行时 View 分析

作为@Commonsware suggested ,我在运行时查看了 View 层次结构。编辑结果:

菜单折叠(出现溢出按钮,没有神秘的额外矩形):

View hierarchy diagram when menu is collapsed

菜单扩展(溢出菜单 View 显示在单独的 Window 中):

View hierarchy diagram when menu is expanded

比较两个菜单(稳定)状态时,主应用程序 View 层次结构(显示在原始 Window 中)没有变化。因此,我的猜测是额外的矩形在菜单动画期间临时添加到主应用程序的窗口,并在完成后立即删除。我不确定为什么会这样做 - 也许这是显示和 overflow hidden 菜单的旧方法(现在未使用)的后遗症?如果我的推论是正确的,那么如果我们能够确定如何防止这种短暂的行为,那么这个问题就可以得到解决......

最佳答案

摘自 Chris Bane's问题的答案AppCompat style background propagated to the Image within the ToolBar

style = local to the Toolbar
theme = global to everything inflated in the Toolbar

根据上面的帖子看来,您在 android:theme 中设置的 android:background 属性是动画期间额外背景颜色的原因。

我将 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>

关于android - 从溢出菜单进入/退出动画中删除额外的背景颜色矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com