2016-10-10 62 views
1

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

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

if (overflowed) actionBarMenu.removeItem(id); 

回答

1

你不是说那里此菜单出现,所以我就放弃,你可以用工具栏做什么的例子。你需要做的是从Toolbar获得参考ActionMenuView,然后调用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; 
} 

这是原油和肮脏 - 我没有测试它 - 但它应该让你开始。