Android 7 中的上下文菜单位置混乱

ContextMenu position is messed up in Android 7

我有一个带有简单列表视图和上下文菜单的应用程序。 pre android 7, 一切正常:

单击列表底部的项目时:

单击列表顶部的项目时:

但是机智 android 7...

单击列表底部的项目时:

单击列表顶部的项目时:

上下文菜单的位置有变化吗?

我在某个地方找到了解决这个问题的方法(不记得在哪里)。 问题出在新的上下文菜单和 Holo 主题之间。

解决方案详情:

我在 values-v24 文件夹中添加了一个样式,如下所示:

<resources>

<style name="ContextPopupMenuStyleLight" parent="@android:style/Widget.Holo.Light.PopupMenu">
    <item name="android:overlapAnchor">true</item>
</style>

<style name="ContextPopupMenuStyleDark" parent="@android:style/Widget.Holo.PopupMenu">
    <item name="android:overlapAnchor">true</item>
</style>

<style name="AppTheme" parent="AppTheme.Common" >
    <item name="android:contextPopupMenuStyle">@style/ContextPopupMenuStyleLight</item>
</style>

然后,在我的默认 styles.xml 中,我使用了一种名为

的样式
AppTheme.Common

这定义了我所有的应用样式,以及一个名为

的空样式
<style name="AppTheme" parent="AppTheme.Common" />

并且我使用该空样式作为默认应用样式。 这样,在版本 > 24 上,应用程序使用这个关于上下文菜单重叠锚点的额外项目来解决问题(将上下文菜单恢复到 API 24 之前的样子)

如果还有人遇到同样的问题, 只需将其添加到您的主题文件夹 (v14)

<item name="android:overlapAnchor">true</item>