code: public void setBackgroundColor(ColorStateList colorStateList) {
          if (colorStateList != null && mBackgroundColor != colorStateList) {
              mBackgroundColor = colorStateList;
              setBackgroundColor(mBackgroundColor.getColorForState(getDrawableState(), mBackgroundColor.getDefaultColor()));
          }
      }
docs: Set background by {@link ColorStateList}
  The color will apply to {@link Drawable} ShapeDrawable
  
  @param colorStateList ColorStateList