{ "type": "class",
  "qname": "spark.layouts.HorizontalLayout",
  "baseClassname": "spark.layouts.supportClasses.LayoutBase"
  ,
    "description": "The HorizontalLayout class arranges the layout elements in a horizontal sequence, left to right, with optional gaps between the elements and optional padding around the elements.  <p>The horizontal position of the elements is determined by arranging them in a horizontal sequence, left to right, taking into account the padding before the first element and the gaps between the elements.</p>  <p>The vertical position of the elements is determined by the layout's <code>verticalAlign</code> property.</p>  <p>During the execution of the <code>measure()</code> method, the default size of the container is calculated by accumulating the preferred sizes of the elements, including gaps and padding. When the <code>requestedColumnCount</code> property is set to a value other than -1, only the space for that many elements is measured, starting from the first element.</p>  <p>During the execution of the <code>updateDisplayList()</code> method, the width of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum width and maximum width are always respected):</p> <ul> <li>If <code>variableColumnWidth</code> is <code>false</code>, then set the element's width to the value of the <code>columnWidth</code> property.</li>  <li>If the element's <code>percentWidth</code> is set, then calculate the element's width by distributing the available container width between all elements with <code>percentWidth</code> setting. The available container width is equal to the container width minus the gaps, the padding and the space occupied by the rest of the elements. The element's <code>precentWidth</code> property is ignored when the layout is virtualized.</li>  <li>Set the element's width to its preferred width.</li> </ul>  <p>The height of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum height and maximum height are always respected):</p> <ul> <li>If the <code>verticalAlign</code> property is <code>&quot;justify&quot;</code>, then set the element's height to the container height.</li>  <li>If the <code>verticalAlign</code> property is <code>&quot;contentJustify&quot;</code>, then set the element's height to the maximum between the container's height and all elements' preferred height.</li>  <li>If the element's <code>percentHeight</code> property is set, then calculate the element's height as a percentage of the container's height.</li>  <li>Set the element's height to its preferred height.</li> </ul>  <p>The <code>&lt;s:HorizontalLayout&gt;</code> tag inherits all of the tag attributes of its superclass and adds the following tag attributes:</p>  <pre>\\n &lt;s:HorizontalLayout\\n <strong>Properties</strong>\\n columnWidth=&quot;<i>calculated</i>&quot;\\n gap=&quot;6&quot;\\n padding=&quot;0&quot;\\n paddingBottom=&quot;0&quot;\\n paddingLeft=&quot;0&quot;\\n paddingRight=&quot;0&quot;\\n paddingTop=&quot;0&quot;\\n requestedColumnCount=&quot;-1&quot;\\n requestedMaxColumnCount=&quot;-1&quot;\\n requestedMinColumnCount=&quot;-1&quot;\\n variableColumnWidth=&quot;true&quot;\\n verticalAlign=&quot;top&quot;\\n /&gt;\\n </pre>",
  "tags": [
  {  "tagName": "mxml",
         "values": [""]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 1.5"]},
      {  "tagName": "productversion",
         "values": ["Flex 4"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "spark.layouts.HorizontalLayout",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "alignmentBaseline",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "gap",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The horizontal space between layout elements, in pixels.  Note that the gap is only applied between layout elements, so if there's just one element, the gap has no effect on the layout.",
        "tags": [
        {  "tagName": "default",
               "values": ["6"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "columnCount",
        "namespace": "public",
        "bindable": ["propertyChange"],
        "details": [],
        "deprecated": {},
          "description": "Returns the current number of elements in view.",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "padding",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The minimum number of pixels between the container's edges and the edges of the layout element.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "paddingLeft",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Number of pixels between the container's left edge and the left edge of the first layout element.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "paddingRight",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Number of pixels between the container's right edge and the right edge of the last layout element.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "paddingTop",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The minimum number of pixels between the container's top edge and the top of all the container's layout elements.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "paddingBottom",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The minimum number of pixels between the container's bottom edge and the bottom of all the container's layout elements.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "requestedMaxColumnCount",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The measured width of this layout is large enough to display at most <code>requestedMaxColumnCount</code> layout elements.  <p>If <code>requestedColumnCount</code> is set, then this property has no effect.</p>  <p>If the actual size of the container using this layout has been explicitly set, then this property has no effect.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "see",
               "values": ["#requestedColumnCount", "#requestedMinColumnCount"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "requestedMinColumnCount",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The measured width of this layout is large enough to display at least <code>requestedMinColumnCount</code> layout elements.  <p>If <code>requestedColumnCount</code> is set, then this property has no effect.</p>  <p>If the actual size of the container using this layout has been explicitly set, then this property has no effect.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "see",
               "values": ["#requestedColumnCount", "#requestedMaxColumnCount"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "requestedColumnCount",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The measured size of this layout is wide enough to display the first <code>requestedColumnCount</code> layout elements. If <code>requestedColumnCount</code> is -1, then the measured size will be big enough for all of the layout elements.  <p>If the actual size of the container using this layout has been explicitly set, then this property has no effect.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "see",
               "values": ["#requestedMinColumnCount", "#requestedMaxColumnCount"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "columnWidth",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "If the <code>variableColumnWidth</code> property is <code>false</code>, then this property specifies the actual width of each layout element, in pixels.  <p>If the <code>variableColumnWidth</code> property is <code>true</code>, the default, then this property has no effect.</p>  <p>The default value of this property is the preferred width of the item specified by the <code>typicalLayoutElement</code> property.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "variableColumnWidth",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "If <code>true</code>, specifies that layout elements are to be allocated their preferred width.  <p>Setting this property to <code>false</code> specifies fixed width columns. The actual width of each layout element is the value of the <code>columnWidth</code> property, and the layout ignores a layout elements' <code>percentWidth</code> property.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["true"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "firstIndexInView",
        "namespace": "public",
        "bindable": ["indexInViewChanged"],
        "details": [],
        "deprecated": {},
          "description": "The index of the first column that is part of the layout and within the layout target's scroll rectangle, or -1 if nothing has been displayed yet.  Note that the column may only be partially in view.",
        "tags": [
        {  "tagName": "see",
               "values": ["lastIndexInView", "fractionOfElementInView"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "lastIndexInView",
        "namespace": "public",
        "bindable": ["indexInViewChanged"],
        "details": [],
        "deprecated": {},
          "description": "The index of the last column that is part of the layout and within the layout target's scroll rectangle, or -1 if nothing has been displayed yet.  Note that the column may only be partially in view.",
        "tags": [
        {  "tagName": "see",
               "values": ["firstIndexInView", "fractionOfElementInView"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "horizontalAlign",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The horizontal alignment of the content relative to the container's width. If the value is <code>&quot;left&quot;</code>, <code>&quot;right&quot;</code>, or <code>&quot;center&quot;</code> then the layout element is aligned relative to the container's <code>contentWidth</code> property.  <p>This property has no effect when <code>clipAndEnableScrolling</code> is true and the <code>contentWidth</code> is greater than the container's width.</p>  <p>This property does not affect the layout's measured size.</p>",
        "tags": [
        {  "tagName": "default",
               "values": [""left""]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "verticalAlign",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The vertical alignment of layout elements.  <p>If the value is <code>&quot;bottom&quot;</code>, <code>&quot;middle&quot;</code>, or <code>&quot;top&quot;</code> then the layout elements are aligned relative to the container's <code>contentHeight</code> property.</p>  <p>If the value is <code>&quot;contentJustify&quot;</code> then the actual height of the layout element is set to the container's <code>contentHeight</code> property. The content height of the container is the height of the largest layout element. If all layout elements are smaller than the height of the container, then set the height of all the layout elements to the height of the container.</p>  <p>If the value is <code>&quot;justify&quot;</code> then the actual height of the layout elements is set to the container's height.</p>  <p>If the value is <code>&quot;baseline&quot;</code> then the elements are positioned such that their text is aligned to the maximum of the elements' text ascent.</p>",
        "tags": [
        {  "tagName": "default",
               "values": [""top""]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "clipAndEnableScrolling",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "default",
               "values": ["false", "false", "false"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5", "Flash 10", "AIR 1.5", "Flash 10", "AIR 1.5"]},
            {  "tagName": "copy",
               "values": ["spark.core.IViewport#clipAndEnableScrolling", "spark.core.IViewport#clipAndEnableScrolling", "spark.core.IViewport#clipAndEnableScrolling"]},
            {  "tagName": "productversion",
               "values": ["Flex 4", "Flex 4", "Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0", "3.0", "3.0"]}  ]},
      { "type": "method",
        "qname": "fractionOfElementInView",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns 1.0 if the specified index is completely in view, 0.0 if it's not, or a value between 0.0 and 1.0 that represents the percentage of the if the index that is partially in view.  <p>An index is &quot;in view&quot; if the corresponding non-null layout element is within the horizontal limits of the container's <code>scrollRect</code> and included in the layout.</p>  <p>If the specified index is partially within the view, the returned value is the percentage of the corresponding layout element that's visible.</p>   Returns 0.0 if the specified index is invalid or if it corresponds to null element, or a ILayoutElement for which the <code>includeInLayout</code> property is <code>false</code>.",
        "tags": [
        {  "tagName": "param",
               "values": ["index The index of the column."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "return",
               "values": ["The percentage of the specified element that's in view."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Number",
          "params": [{ "name": "index", "type": "int"}]}
      ]
  }






