代码之家  ›  专栏  ›  技术社区  ›  adam

flex-将滚动条的位置更改为水平列组件的顶部

  •  3
  • adam  · 技术社区  · 16 年前

    默认情况下,水平列表组件的水平滚动条将位于底部。有没有办法重新定位,使其位于顶部?

    为了清晰起见,我不是说使用ScrollToIndex或HorizontalScrollPosition或类似工具移动滚动位置,而是指滚动条组件的实际物理位置。

    任何建议都将不胜感激!

    2 回复  |  直到 14 年前
        1
  •  3
  •   igkuk7    16 年前

    我刚才在找类似的东西,发现 this post . 我最终以另一种方式解决了我的问题,所以没有使用那个解决方案,但是它可能适用于你想要的。

        2
  •  1
  •   Sly_cardinal    16 年前

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

    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);
            }
    
        }
    }