在Android 7中,ContextMenu的位置搞砸了

问题描述 投票:6回答:2

我有一个带有简单列表视图和上下文菜单的应用程序。在android 7之前,一切看起来都不错:

单击列表底部的项目时:enter image description here

单击列表顶部的项目时:enter image description here

但是用android 7 ......

单击列表底部的项目时:enter image description here

单击列表顶部的项目时:enter image description here

上下文菜单的位置是否有任何变化?

android contextmenu android-7.0-nougat
2个回答
11
投票

我在某个地方找到了解决方案(不记得在哪里)。问题出在新的上下文菜单和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之前的样子)


2
投票

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

<item name="android:overlapAnchor">true</item>
© www.soinside.com 2019 - 2024. All rights reserved.