Как обнаружить переполнение пункта меню?

#android #android-layout

#Android #android-макет

Вопрос:

Возможно ли программно определить, когда меню переполнено?

Я намерен, чтобы пункт меню всегда был видимым ( SHOW_AS_ACTION_ALWAYS ), за исключением случая, когда это приведет к переполнению других элементов, и в этом случае вообще не показывайте пункт меню. То есть:

 if (overflowed) actionBarMenu.removeItem(id);
  

Ответ №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;
}
  

Это грубо и грязно — и я не тестировал его — но это должно помочь вам начать.