默认情况下,HorizontalList组件的水平ScrollBar将位于底部。有没有办法将它重新定位,使其位于顶部?
为了清楚起见,我并不是指使用scrollToIndex或horizontalScrollPosition或类似的方法来移动滚动条位置,而是指移动滚动条组件的实际物理位置。
如有任何建议,我们将不胜感激!
发布于 2009-03-05 16:19:57
不久前,我自己也在寻找类似的东西,找到了this post。我最终以另一种方式解决了我的问题,所以我没有使用这种解决方案,尽管它可能会对你想要的东西起作用。
发布于 2009-03-24 08:10:13
我以前也做过同样的事情。我不得不深入研究基类(以处理一些掩码/定位问题),这就是我想出来的:
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);
}
}
}https://stackoverflow.com/questions/615074
复制相似问题