Android 如何在多窗口支持中强制ActionBar重新评估工具栏和溢出菜单

Android 如何在多窗口支持中强制ActionBar重新评估工具栏和溢出菜单,android,android-actionbar,multi-window,Android,Android Actionbar,Multi Window,我已经在我的android应用程序中添加了对三星多窗口功能的支持。除了在多窗口模式下运行应用程序时,操作栏不会调整按钮数量以匹配缩小的应用程序窗口大小外,所有操作似乎都正常工作。当窗口变小时,按钮就会变少,我希望这些按钮会被移动到溢出菜单,反之亦然,当应用程序窗口再次变大时。因为我需要向后兼容我正在使用的android 2.2: android.support.v4.view.MenuItemCompat 与 我已经按照三星文档3-8-9设置了一个globalLayout侦听器来检测大小变化。

我已经在我的android应用程序中添加了对三星多窗口功能的支持。除了在多窗口模式下运行应用程序时,操作栏不会调整按钮数量以匹配缩小的应用程序窗口大小外,所有操作似乎都正常工作。当窗口变小时,按钮就会变少,我希望这些按钮会被移动到溢出菜单,反之亦然,当应用程序窗口再次变大时。因为我需要向后兼容我正在使用的android 2.2:

android.support.v4.view.MenuItemCompat

我已经按照三星文档3-8-9设置了一个globalLayout侦听器来检测大小变化。在中处理布局更改

使用这个,我看到侦听器以正确的新宽度/高度启动。 这似乎是更新actionbar/overflow菜单的最佳位置,但如何做到这一点呢? 我尝试过切换一些动作栏属性,比如“ActionBar.DISPLAY\u SHOW\u TITLE”,让它自己重建,但没有效果


有什么建议吗?提前谢谢

强制刷新的方法是
支持无效选项菜单
。我认为限制是基于资源的,因此可能仍然无法解决问题..感谢您的建议,但调用SupportInvalidateOptions功能表确实无法解决问题。正如我所怀疑的,appcompat通过资源控制按钮的数量,尤其是通过abc\u max\u action\u按钮。尝试在调整大小之前和之后执行
getResources().getInteger(R.integer.abc\u max\u action\u按钮)
。我打赌你会看到同样的价值。如果是这样的话,解决方案是更新配置,但如果你能确认我的直觉,我们就可以做到。我在android-support-v4.jar中没有看到R.integer.abc\u max\u action\u按钮,输入该值会导致未知标识符。搜索该标识只会显示对support-v7的引用。我基于v11 Api minimum创建了一个小型测试应用程序-不使用support.v4库,而是使用常规的ActionBar。这在调整应用程序大小时表现得更好:操作栏按钮更好地右对齐,并且不容易部分不可见/关闭,但在调整大小时,不可见按钮仍不会移动到溢出菜单。我还在globalLayout侦听器中尝试(延迟和直接)invalidateOptions菜单(),但这并不能解决问题。
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);