如何建立一个快速反应的溢出下拉菜单?

How to build a fast-reacting overflow dropdown menu?

Anroid 的默认溢出菜单无法正确响应快速点击。当我双击下拉菜单时,我想打开菜单,然后单击其中的第一项。但是默认的溢出菜单总是将我的第二次点击放在其他地方。

在上面的 gif 中,第二次点击总是落在第 4 个项目上(第一个项目是 'commit',第 4 个 'save as')

但是在像 ebdic 或 chrome 这样的应用程序中,溢出菜单会响应快速点击:

P.S.,android:popupAnimationStyle 和 android:windowAnimationStyle 在这里没用。

在您的点击之间设置延迟。 android UI 旨在以人的速度工作,菜单会展开,然后由人来选择结果。它并不意味着以自动 UI 最大速度工作。这不是他们要修复的错误。

或者您不能使用内置菜单功能并为其编写自己的 UI,这可能是 Chrome 所做的,因为 Chrome 早于溢出菜单。但是我觉得不值得。

经过近 3 个小时的挫折,我现在有了自己的答案:)
一开始,溢出菜单的行为有所不同;我可以非常快速地点击并在 android 4.4 的默认溢出菜单上获得预期的结果。但在更高版本中,默认行为会改变。
是的,使用 AnimationStyle 我对此无能为力,相反我应该调整 actionOverflowMenuStyle。

<style name="toolbarTheme" parent="AppTheme">
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="colorAccent">@color/colorHeaderBlue</item>
    <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
    <!--item name="android:popupBackground">@android:color/white</item-->
    <item name="android:popupBackground">@drawable/round_corner_card1_1cor</item>
</style>

<style name="OverflowMenuStyle">
    <item name="overlapAnchor">true</item>
    <item name="android:dropDownVerticalOffset">0dip</item>
    <item name="android:dropDownHorizontalOffset">0dip</item>
</style>

注意OverflowMenuStyle的父主题,留空,或者设为"Base.Widget.AppCompat.ListView.Menu"。

结果: