1

我想在构建我的应用程序时显示 3 点溢出菜单键(在最近应用虚拟键旁边)

android:targetSdkVersion="15"

这是我的故事。我的应用程序包含两个 lib 项目(只有 jars + res 没有源),lib-a 正在使用菜单;当应用程序使用 target-sdk=10 构建时,运行良好,系统导航栏上的最近应用程序键旁边会显示 3 点图标。现在 lib-b 升级了,我必须使用 target-sdk=15 构建应用程序,但这会使 lib-a UI 菜单消失。我希望 lib-a 像以前一样有菜单。

我查了这些帖子,很有帮助,

当目标 sdk 版本大于 10 时,Android 操作栏菜单不显示

Android 主题、全屏和操作栏

我既不能应用 ActionBarSherlock 也不能将 target-sdk 设置为 10。所以我想知道使用旧主题(不是全息主题)是否会有所帮助。我创建了一个主题,派生自 [android.Theme],适用于 lib-a 中的所有活动(在应用程序的清单 xml 中),但没有运气。

所以我的问题是,主题能解决问题吗?

4

3 回答 3

2

我认为你根本做不到。由于遗留原因,系统栏中的“溢出菜单”存在,当且仅当遗留应用程序(目标 sdk<11)在具有虚拟系统栏的设备上运行时才会显示。它根本不打算在针对更高版本时出现。

于 2013-04-24T15:56:14.360 回答
1

不,你不能这样做。您可能会下载较早版本的 actionBarSherlock(即 4.1.0),其中 absForceOverflow 是现有方法,因此这将强制您的 3 点菜单适用于每个系统(最高 1.6),但这可能会导致您出现问题(例如带有硬件键盘的手机等)。

几周前我偶然发现了这个问题,我通过一种解决方法解决了这个问题:在操作栏中添加一个简单的菜单图标(三点图标),如果你点击它,就会出现一个自定义对话框,看起来就像原来的菜单(你可以以编程方式将其放置到正确的位置,因为您知道栏的默认高度(例如 hdpi 手机上的 48dp)。

希望这可以帮助。

于 2013-04-24T16:06:12.213 回答
0

是的,您只需像这样从 onCreate 方法更改 targetVersion 即可:

@Override
public void onCreate(Bundle savedInstanceState) {
    getApplicationInfo().targetSdkVersion = 10; // To enable the 3-dot menu call this code before super.OnCreate
    super.onCreate(savedInstanceState); 
}

在 Android 4.xx 和 Android 3.0 上测试

于 2014-07-28T16:32:27.240 回答