/**
     * Fits as many menu items in the main panel and returns a list of the menu items that were not
     * fit in.
     *
     * @return The menu items that are not included in this main panel.
     */
    public List<MenuItem> layoutMenuItems(List<MenuItem> menuItems, int suggestedWidth) {
      final int toolbarWidth =
          getAdjustedToolbarWidth(mContext, suggestedWidth)
              // Reserve space for the "open overflow" button.
              - getEstimatedOpenOverflowButtonWidth(mContext);

      int availableWidth = toolbarWidth;
      final LinkedList<MenuItem> remainingMenuItems = new LinkedList<MenuItem>(menuItems);

      mContentView.removeAllViews();

      boolean isFirstItem = true;
      while (!remainingMenuItems.isEmpty()) {
        final MenuItem menuItem = remainingMenuItems.peek();
        Button menuItemButton = createMenuItemButton(mContext, menuItem);

        // Adding additional start padding for the first button to even out button spacing.
        if (isFirstItem) {
          menuItemButton.setPaddingRelative(
              (int) (1.5 * menuItemButton.getPaddingStart()),
              menuItemButton.getPaddingTop(),
              menuItemButton.getPaddingEnd(),
              menuItemButton.getPaddingBottom());
          isFirstItem = false;
        }

        // Adding additional end padding for the last button to even out button spacing.
        if (remainingMenuItems.size() == 1) {
          menuItemButton.setPaddingRelative(
              menuItemButton.getPaddingStart(),
              menuItemButton.getPaddingTop(),
              (int) (1.5 * menuItemButton.getPaddingEnd()),
              menuItemButton.getPaddingBottom());
        }

        menuItemButton.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
        int menuItemButtonWidth = Math.min(menuItemButton.getMeasuredWidth(), toolbarWidth);
        if (menuItemButtonWidth <= availableWidth) {
          menuItemButton.setTag(menuItem);
          menuItemButton.setOnClickListener(mMenuItemButtonOnClickListener);
          mContentView.addView(menuItemButton);
          ViewGroup.LayoutParams params = menuItemButton.getLayoutParams();
          params.width = menuItemButtonWidth;
          menuItemButton.setLayoutParams(params);
          availableWidth -= menuItemButtonWidth;
          remainingMenuItems.pop();
        } else {
          if (mOpenOverflowButton == null) {
            mOpenOverflowButton =
                (ImageButton)
                    LayoutInflater.from(mContext)
                        .inflate(R.layout.floating_popup_open_overflow_button, null);
            mOpenOverflowButton.setOnClickListener(
                new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                    if (mOpenOverflowButton != null) {
                      mOpenOverflow.run();
                    }
                  }
                });
          }
          mContentView.addView(mOpenOverflowButton);
          break;
        }
      }
      return remainingMenuItems;
    }
 @Override
 protected void layoutChildren(int l, int t, int width, int height) {
   setChildPosition(_content, l, t);
   setChildPosition(
       _close_btn, (width - _close_btn.getMeasuredWidth()) / 2, _content.getMeasuredHeight());
 }