是否可以以编程方式检测菜单何时溢出?
我的目的是让一个菜单项始终可见(SHOW_AS_ACTION_ALWAYS
),除非它会导致其他项溢出,在这种情况下,根本不显示菜单项。那就是:
if (overflowed) actionBarMenu.removeItem(id);
答案 0 :(得分:1)
你没有说这个菜单出现在哪里,所以我只举一个你可以用工具栏做什么的例子。您需要做的是从ActionMenuView
获取对Toolbar
的引用,然后在其上调用isOverflowMenuShowing
,如下所示:
private boolean isOverflowShowing(Toolbar toolbar) {
if(toolbar == null) {
return false;
}
for(int i = 0; i < toolbarView.getChildCount(); i++) {
View v = toolbarView.getChildAt(i);
if(v instanceof ActionMenuView) {
return ((ActionMenuView)v).isOverflowMenuShowing();
}
}
return false;
}
这是粗糙和肮脏的 - 我还没有测试过 - 但它应该让你开始。