【问题标题】:Flex - Change position of scrollbar to the top of a HorizontalList componentFlex - 将滚动条的位置更改到 Horizo​​ntalList 组件的顶部
【发布时间】:2010-10-11 12:48:05
【问题描述】:

默认情况下,Horizo​​ntalList 组件的 Horizo​​ntal ScrollBar 将位于底部。有没有办法重新定位它使其位于顶部?

为了清楚起见,我并不是指使用 scrollToIndex 或 Horizo​​ntalScrollPosition 或类似方法移动滚动位置,而是滚动条组件的实际物理位置。

任何建议将不胜感激!

【问题讨论】:

    标签: apache-flex actionscript-3 scrollbar horizontallist


    【解决方案1】:

    前段时间我自己也在寻找类似的东西,结果找到了this post。我最终以另一种方式解决了我的问题,因此没有使用该解决方案,但它可能适用于您想要的。

    【讨论】:

      【解决方案2】:

      我以前也做过同样的事情。我不得不在基类中挖掘(以处理一些掩蔽/定位问题),这就是我想出的:

      package
      {
          import flash.display.DisplayObject;
      
          import mx.controls.HorizontalList;
          import mx.core.EdgeMetrics;
      
          public class ReverseHList extends HorizontalList
          {
              override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
              {
                  super.updateDisplayList(unscaledWidth, unscaledHeight);
      
                  var w:Number = unscaledWidth;
                  var h:Number = unscaledHeight;
                  var vm:EdgeMetrics = viewMetrics;
                  if (horizontalScrollBar && horizontalScrollBar.visible)
                  {
                      horizontalScrollBar.setActualSize(w - vm.left - vm.right,
                                                        horizontalScrollBar.minHeight);
                      horizontalScrollBar.move(vm.left, vm.top);
      
                      horizontalScrollBar.enabled = enabled;
                  }
      
                  var mask:DisplayObject = maskShape;
      
                  var wd:Number = w - vm.left - vm.right;
                  var ht:Number = h - vm.top - vm.bottom;
      
                  mask.width = wd < 0 ? 0 : wd;
                  mask.height = ht < 0 ? 0 : ht;
      
                  mask.x = vm.left;
                  mask.y = vm.top + vm.bottom;
              }
      
              override protected function adjustListContent(unscaledWidth:Number = -1,
                                             unscaledHeight:Number = -1):void
              {
                  super.adjustListContent(unscaledWidth, unscaledHeight);
      
                  var lcx:Number = viewMetrics.left + listContent.leftOffset;
                  var lcy:Number = (viewMetrics.top + listContent.topOffset) + viewMetrics.bottom;
                  listContent.move(lcx, lcy);
              }
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        相关资源
        最近更新 更多