code: @SuppressLint("WrongCall")
      protected boolean layout() {
          boolean relaidout = false;
          Log.v(Log.SUBSYSTEM.LAYOUT, TAG, "layout(%s): changed: %b, requested: %b", getName(),
                  isChanged(), mLayoutRequested);
  
          if (isChanged() || mLayoutRequested) {
              Log.v(Log.SUBSYSTEM.LAYOUT, TAG, "layout(%s): calling onLayout", getName());
              relaidout = onLayout();
          }
  
          mLayoutRequested = false;
          mChanged = false;
          return relaidout;
      }
docs: Does layout on the {@link Widget}. If you override this method and don't
  call {@code super}, bad things will almost certainly happen.
  @return true if the widget has been relaidout, otherwise - false