如何检测菜单项溢出?

时间:2016-10-10 21:01:36

标签: android android-layout

是否可以以编程方式检测菜单何时溢出?

我的目的是让一个菜单项始终可见(SHOW_AS_ACTION_ALWAYS),除非它会导致其他项溢出,在这种情况下,根本不显示菜单项。那就是:

if (overflowed) actionBarMenu.removeItem(id);

1 个答案:

答案 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;
}

这是粗糙和肮脏的 - 我还没有测试过 - 但它应该让你开始。